docs/NEWS -text
docs/README -text
docs/THANKS -text
+docs/TODOs.txt -text
inc/.htaccess -text
inc/classes.php -text
inc/classes/.htaccess -text
inc/classes/exceptions/class_FrameworkException.php -text
inc/classes/exceptions/compressor/.htaccess -text
inc/classes/exceptions/compressor/class_MismatchingCompressorsException.php -text
-inc/classes/exceptions/container/.htaccess -text
-inc/classes/exceptions/container/class_ContainerItemIsNoArrayException.php -text
-inc/classes/exceptions/container/class_ContainerItemIsNullException.php -text
-inc/classes/exceptions/container/class_ContainerMaybeDamagedException.php -text
inc/classes/exceptions/controller/.htaccess -text
inc/classes/exceptions/controller/class_DefaultControllerException.php -text
inc/classes/exceptions/controller/class_InvalidControllerException.php -text
inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php -text
inc/classes/exceptions/main/class_DimNotFoundInArrayException.php -text
inc/classes/exceptions/main/class_EmptyVariableException.php -text
-inc/classes/exceptions/main/class_ExceptionNotFoundException.php -text
inc/classes/exceptions/main/class_FatalErrorException.php -text
-inc/classes/exceptions/main/class_GetterNotFoundException.php -text
inc/classes/exceptions/main/class_IndexOutOfBoundsException.php -text
inc/classes/exceptions/main/class_InvalidArrayCountException.php -text
inc/classes/exceptions/main/class_InvalidCommandException.php -text
inc/classes/exceptions/main/class_MissingArrayElementsException.php -text
inc/classes/exceptions/main/class_MissingDecimalsThousandsSeperatorException.php -text
inc/classes/exceptions/main/class_MissingMethodException.php -text
-inc/classes/exceptions/main/class_NoArrayCreatedException.php -text
-inc/classes/exceptions/main/class_NoArrayException.php -text
inc/classes/exceptions/main/class_NullPointerException.php -text
inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php -text
inc/classes/exceptions/main/class_VariableIsNotSetException.php -text
tests/old/loader-test.php -text
tests/old/personell-test.php -text
tests/unittest.sh -text
+/todo-builder.sh -text
--- /dev/null
+### WARNING: THIS FILE IS AUTO-GENERATED BY ./todo-builder.sh ###
+### DO NOT EDIT THIS FILE. ###
+./inc/classes/exceptions/io/class_FileNotFoundException.php:10: * @todo Rename this class to FileIoException
+./inc/classes/exceptions/main/class_ClassNotFoundException.php:10: * @todo Rename this class to NoClassException
+./inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php:10: * @todo Rename this class to NoFoundEntryException
+./inc/classes/exceptions/main/class_MissingMethodException.php:13: * @todo Try to rewrite user/guest login classes and mark this exception as deprecated
+./inc/classes/interfaces/class_FrameworkInterface.php:11: * @todo Find a better name for this interface
+./inc/classes/main/class_BaseFrameworkSystem.php:1040: * @todo Write a logging mechanism for productive mode
+./inc/classes/main/class_BaseFrameworkSystem.php:104: // @todo Try to clean these constants up
+./inc/classes/main/class_BaseFrameworkSystem.php:1054: // @TODO Finish this part!
+./inc/classes/main/class_BaseFrameworkSystem.php:185: * @todo This is old code. Do we still need this old lost code?
+./inc/classes/main/class_BaseFrameworkSystem.php:253: * @todo SearchableResult and UpdateableResult shall have a super interface to use here
+./inc/classes/main/commands/web/class_WebLoginAreaCommand.php:64: * @todo Add some stuff here: Some personal data, app/game related data
+./inc/classes/main/console/class_ConsoleTools.php:41: * @todo We should connect this to a caching class to cache DNS requests
+./inc/classes/main/console/class_ConsoleTools.php:54: // @TODO Here should the cacher be implemented
+./inc/classes/main/controller/console/class_ConsoleDefaultController.php:10: * @todo This controller shall still provide some headlines for sidebars
+./inc/classes/main/controller/login/class_WebLoginAreaController.php:40: * @todo Add some morer filters to this controller
+./inc/classes/main/controller/web/class_WebConfirmController.php:40: * @todo Add some filters to this controller
+./inc/classes/main/controller/web/class_WebDefaultController.php:10: * @todo This controller shall still provide some headlines for sidebars
+./inc/classes/main/controller/web/class_WebLoginController.php:41: * @todo Add some filters to this controller
+./inc/classes/main/controller/web/class_WebLogoutController.php:10: * @todo This controller shall still provide some headlines for sidebars
+./inc/classes/main/controller/web/class_WebLogoutDoneController.php:40: * @todo Add some filters to this controller
+./inc/classes/main/controller/web/class_WebRegisterController.php:40: * @todo Add some filters to this controller
+./inc/classes/main/controller/web/class_WebStatusController.php:10: * @todo This controller shall still provide some headlines for sidebars
+./inc/classes/main/criteria/search/class_SearchCriteria.php:114: * @todo Find a nice casting here. (int) allows until and including 32766.
+./inc/classes/main/criteria/search/class_SearchCriteria.php:94: * @todo Find a nice casting here. (int) allows until and including 32766.
+./inc/classes/main/database/databases/class_LocalFileDatabase.php:363: * @todo Do some checks on the database directory and files here
+./inc/classes/main/discovery/payment/class_LocalPaymentDiscovery.php:82: * @todo 0% done
+./inc/classes/main/filter/change/class_EmailChangeFilter.php:54: * @todo Implement email change of the user here. HINT: Use the User class!
+./inc/classes/main/filter/change/class_PasswordChangeFilter.php:55: * @todo Finished updating user password hash here. HINT: Use the User class again.
+./inc/classes/main/filter/news/class_NewsProcessFilter.php:55: * @todo Unfinished stub, add functionality here
+./inc/classes/main/filter/payment/class_PaymentDiscoveryFilter.php:97: * @todo 0% done
+./inc/classes/main/filter/update/class_UserUpdateFilter.php:55: * @todo Add more user updates here
+./inc/classes/main/filter/verifier/class_AccountPasswordVerifierFilter.php:57: * @todo Rewrite handling of different password fields
+./inc/classes/main/helper/class_BaseHelper.php:171: * @todo Rewrite this method using a helper class for filtering data
+./inc/classes/main/helper/web/class_BaseWebHelper.php:151: * @todo Implement check if rules have been changed
+./inc/classes/main/helper/web/forms/class_WebFormHelper.php:102: * @todo Add some unique PIN here to bypass problems with some browser and/or extensions
+./inc/classes/main/helper/web/forms/class_WebFormHelper.php:621: * @todo Add checking if sub option is already added
+./inc/classes/main/helper/web/forms/class_WebFormHelper.php:649: * @todo Add checking if sub option is already added
+./inc/classes/main/helper/web/links/class_WebLinkHelper.php:184: * @todo Completely unimplemented
+./inc/classes/main/images/class_BaseImage.php:156: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:166: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:176: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:186: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:196: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:215: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:234: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:245: * @todo Find something usefull for this method.
+./inc/classes/main/images/class_BaseImage.php:255: * @todo Find something usefull for this method.
+./inc/classes/main/io/class_FileIoStream.php:74: * @todo This method needs heavy rewrite
+./inc/classes/main/mailer/debug/class_DebugMailer.php:124: * @todo 0% done
+./inc/classes/main/output/class_ConsoleOutput.php:61: // @TODO Need to rewrite this to $requestInstance->addHeader()
+./inc/classes/main/output/class_WebOutput.php:55: // @TODO Need to rewrite this to $requestInstance->addHeader()
+./inc/classes/main/points/class_UserPoints.php:103: // @TODO Load points here
+./inc/classes/main/points/class_UserPoints.php:81: * @todo Finish loading part of points
+./inc/classes/main/request/console/class_ConsoleRequest.php:115: // @TODO There are no cookies on console
+./inc/classes/main/request/console/class_ConsoleRequest.php:55: * @todo Needs to be implemented
+./inc/classes/main/resolver/controller/class_BaseControllerResolver.php:137: // @TODO Maybe we need to log this?
+./inc/classes/main/response/http/class_HttpResponse.php:77: * @todo Encryption of cookie data not yet supported.
+./inc/classes/main/response/http/class_HttpResponse.php:78: * @todo Why are these parameters conflicting?
+./inc/classes/main/response/http/class_HttpResponse.php:79: * @todo If the return statement is removed and setcookie() commented out,
+./inc/classes/main/response/http/class_HttpResponse.php:80: * @todo this will send only one cookie out, the first one.
+./inc/classes/main/response/image/class_ImageResponse.php:93: * @todo Encryption of cookie data not yet supported.
+./inc/classes/main/response/image/class_ImageResponse.php:94: * @todo Why are these parameters conflicting?
+./inc/classes/main/response/image/class_ImageResponse.php:95: * @todo If the return statement is removed and setcookie() commented out,
+./inc/classes/main/response/image/class_ImageResponse.php:96: * @todo this will send only one cookie out, the first one.
+./inc/classes/main/result/class_DatabaseResult.php:226: * @todo 0% done
+./inc/classes/main/result/class_DatabaseResult.php:379:4 * @todo Find a caching way without modifying the result array
+./inc/classes/main/rng/class_RandomNumberGenerator.php:150: * @todo I had a better random number generator here but now it is somewhere lost :(
+./inc/classes/main/rng/class_RandomNumberGenerator.php:83: * @todo Add site key for stronger salt!
+./inc/classes/main/template/class_BaseTemplateEngine.php:1303: // @TODO We need to find a fallback solution here
+./inc/classes/main/template/class_BaseTemplateEngine.php:810: * @todo Unfinished work or don't die here.
+./inc/classes/main/template/class_BaseTemplateEngine.php:827: // @TODO Non-string found so we need some deeper analysis...
+./inc/classes/main/template/class_BaseTemplateEngine.php:904: // @TODO Old behaviour, will become obsolete!
+./inc/classes/main/template/class_BaseTemplateEngine.php:907: // @TODO Yet another old way
+./inc/classes/main/template/class_BaseTemplateEngine.php:981: * @todo Make this code some nicer...
+./inc/classes/main/template/image/class_ImageTemplateEngine.php:229: * @todo Find something usefull with this!
+./inc/classes/main/template/image/class_ImageTemplateEngine.php:249: * @todo Add cache creation here
+./inc/classes/main/template/mail/class_MailTemplateEngine.php:234: * @todo Add cache creation here
+./inc/classes/main/template/mail/class_MailTemplateEngine.php:244: * @todo Should we call back the mailer class here?
+./inc/classes/main/template/mail/class_MailTemplateEngine.php:325: * @todo 0% done
+./inc/classes/main/user/class_BaseUser.php:305: * @todo Try to make this method more generic so we can move it in BaseFrameworkSystem
+./inc/classes/main/user/class_BaseUser.php:80: * @todo Find a way of casting here. "(int)" might destroy the user id > 32766
+./inc/classes/main/user/member/class_Member.php:84: * @todo Add more ways over creating user classes
+./inc/classes/middleware/debug/class_DebugMiddleware.php:112: // @TODO Initialization phase
+./inc/config/class_FrameworkConfiguration.php:205: * @todo We have to add some more entries from $_SERVER here
+./inc/database.php:49:// @TODO Rewrite this
+./inc/hooks.php:26:// @TODO This makes the core depending on the SPL. But it should be installed anyway.
+./inc/includes.php:36:// @TODO Find a nicer OOP-ed way for this
+./inc/language.php:31:// @TODO Rewrite this
+./inc/loader/class_ClassLoader.php:262: /* @todo: Do not die here. */
+### ### DEPRECATION FOLLOWS: ### ###
+./inc/classes/exceptions/database/general/class_DatabaseUpdateSupportException.php:10: * @deprecated
+./inc/classes/exceptions/io/class_FileNotFoundException.php:11: * @deprecated
+./inc/classes/exceptions/io/class_InvalidDirectoryResourceException.php:10: * @deprecated
+./inc/classes/exceptions/main/class_ClassNotFoundException.php:11: * @deprecated
+./inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php:11: * @deprecated
+./inc/classes/main/filter/class_AbstractFilterDecorator.php:2:// @DEPRECATED
+./inc/classes/main/template/class_BaseTemplateEngine.php:1131: * @deprecated
+./inc/config/class_FrameworkConfiguration.php:107: * @deprecated
+++ /dev/null
-Deny from all
+++ /dev/null
-<?php
-/**
- * An exception thrown when a container item is not an array
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class ContainerItemIsNoArrayException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $class Class throwing this exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (FrameworkInterface $class, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] A container item is not an array.",
- $class->__toString(),
- $this->getLine()
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
+++ /dev/null
-<?php
-/**
- * An exception thrown when a container item is null
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class ContainerItemIsNullException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $class Class throwing this exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (FrameworkInterface $class, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] A container item is <em>null</em>.",
- $class->__toString(),
- $this->getLine()
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
+++ /dev/null
-<?php
-/**
- * An exception thrown when the container is possibly damaged
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class ContainerMaybeDamagedException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $class Class throwing this exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (FrameworkInterface $class, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] A container is possibly damaged.",
- $class->__toString(),
- $this->getLine()
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
+++ /dev/null
-<?php
-/**
- * An exception thrown when an other exception was not found
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @todo Is this exception still needed???
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class ExceptionNotFoundException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $classArray Array with exception data
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (array $classArray, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] Exception <span class=\"exception_reason\">%s</span> not found.",
- $classArray[0],
- $this->getLine(),
- $classArray[1]
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
+++ /dev/null
-<?php
-/**
- * An exception thrown when a getter for an attribute was not found
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @todo This class is no longer needed!
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class GetterNotFoundException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $message Message from the exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (array $dataArray, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] Getter-Methode für Attribut <span class=\"exception_reason\">%s</span> nicht gefunden.",
- $dataArray[0]->__toString(),
- $this->getLine(),
- $dataArray[1]
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
<?php
/**
- * An exception thrown when a method is missing
+ * An exception thrown when a method is missing, this exception is used in
+ * guest/user login classes and thrown when a factory method is absend. I think
+ * we should still give it a try to rewrite these classes and again mark this
+ * method as deprecated because we have a more flexible ObjectFactory class.
*
* @author Roland Haeder <webmaster@ship-simu.org>
* @version 0.0.0
* @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.ship-simu.org
- * @deprecated
- *
+ * @todo Try to rewrite user/guest login classes and mark this exception as deprecated
+ *
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
+++ /dev/null
-<?php
-/**
- * An exception thrown then no array was created in a dynamic environment
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @todo This class is no longer needed
- * @deprecated
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class NoArrayCreatedException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $array Message from the exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct (array $array, $code) {
- // Add a message around the missing class
- $message = sprintf("[%s:%d] <span class=\"exception_reason\">%s</span> ist kein erstelltes Objekt.",
- $array[0]->__toString(),
- $this->getLine(),
- $array[1]
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
+++ /dev/null
-<?php
-/**
- * An exception thrown when a given attribute/variable is no array.
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
- * @todo Is this exception still needed?
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class NoArrayException extends FrameworkException {
- /**
- * The constructor
- *
- * @param $message Message from the exception
- * @param $code Code number for the exception
- * @return void
- */
- public function __construct ($string, $code) {
- // Add a message around the missing class
- $message = sprintf("<span class=\"exception_reason\">%s</span> ist kein Array!",
- $string
- );
-
- // Call parent constructor
- parent::__construct($message, $code);
- }
-}
-
-// [EOF]
-?>
/***********************
* Exception codes.... *
***********************/
-
+ // @todo Try to clean these constants up
const EXCEPTION_IS_NULL_POINTER = 0x001;
const EXCEPTION_IS_NO_OBJECT = 0x002;
const EXCEPTION_IS_NO_ARRAY = 0x003;
--- /dev/null
+#!/bin/sh
+
+# This script helps building the file docs/TODOs.txt and should be executed by
+# developers with SVN write-access
+
+if ! test -e "docs"; then
+ echo "$0: Please execute this script from root directory."
+ exit 1
+fi
+
+echo "$0: Generating TODOs.txt..."
+echo "### WARNING: THIS FILE IS AUTO-GENERATED BY $0 ###" > docs/TODOs.txt
+echo "### DO NOT EDIT THIS FILE. ###" >> docs/TODOs.txt
+find -type f -name "*.php" -exec grep -Hin "@TODO" {} \; | sort >> docs/TODOs.txt
+echo "### ### DEPRECATION FOLLOWS: ### ###" >> docs/TODOs.txt
+find -type f -name "*.php" -exec grep -Hin "@DEPRECATED" {} \; | sort >> docs/TODOs.txt
+echo "$0: Done."
+exit 0