Developer:Core Tasks


Jump to: navigation, search


Release v0.0

Goal of this release is to just get basic PBX functionality working.

EST Completion: September 30th, 2008

Simple Fixes


  • No validation for duplicate extensions/providers/etc.. CakePHP has some of this built in but it's just not configured. Should research what's available here and do some error checking when creating/renaming extensions and providers.
    • ASSIGNED TO: falljer


  • When using "freeswitch" as your database driver, the delete function does not work (it does not exist in the code). It needs to be added in model/file based (XML) deletes do not work. This function needs to be added (you are overriding the DB layer) in models/extension.php and models/provider.php
    • COMPLETED: Darren
  • When using "freeswitch" as your database driver, the renaming of an extension or profile does not result in the file itself being renamed. As a rule, the filename and the contextual name for the extension/profile need to match. This needs to be fixed in the save() functions in models/extension.php and models/provider.php.
    • COMPLETED: Darren

NOTE: These above functions are duplicated and not written in the right place. That's OK for now - what is written is not a waste and will be re-used. Later, the above functions will be moved to the actual DBO layer and consolidated. They don't belong in the model files but we are ignoring that for now so that we can utilize functions of CakePHP not provided in the DBO layer. Don't be a king here - you won't win (yet). Keep it simple to get it working. We'll move it later.

Architectural Changes



  • When saving checkboxes, they return 0/1 from the UI to indicate true/false. We need to actually convert these values to "true" or "false" where appropriate. This change needs to be strategically thought out - we do not want to convert fields that should contain 0 (like the operator extension) to "false". That will break things. We also don't want this in our controller because it will be repeated a ton of times.
    • COMPLETED: Darren
  • Make it so you can save to a file, or multiple files, via config. This is a pretty simple change, since everything is already based on contextual field name searches (i.e. name="ext1" and name="ext2" are always searched for in XML, so both could theoretically exist in the same file without any issue). This should be a flag in the config file.
    • ASSIGNED TO: Darren

Other Tasks

FreeSWITCH Specific

  • Create a good dialplan to utilize the generated SIP profiles and extensions with the features setup above. Specifically, a bunch of variables are created in the user profile that are not used by the stock dialplan, but should be. The variables are available, so this is a trivial task.
    • ASSIGNED TO: bkw (if I'm lucky)
  • Create a settings page, to assist with setup. The page should allow specifying all the options currently held in config/switch_configuration.php. I have frankly not thought about the design of this or what's required.
    • ASSIGNED TO: Felix

Release v0.1

Goal of this release is to add fancy conferencing features and simplify the SIP profile editor so it matches what most providers are actually requiring on setup.

I will break these into their parts when we get closer.

EST Completion: October 18th, 2008

General Goals

    • Fix the status overlays to work properly on refresh and update in the background, not the foreground
  • Check-in XML/RPC functionality
    • Allow for API commands to be sent to FS (not just read-only) from user (via views)
  • Modify SIP gateways editor to be a true SIP profiles creator/editor/etc. with the ability to add settings for the SIP profiles themselves (what is known today as the base settings in directories for sip_profiles, i.e. internal.xml, external.xml, nat.xml, etc. with subfolders/gateways beneath them)


  • Channel status does not auto-refresh. Use AJAX libraries to allow auto-refresh, or write own. Research what's already built into the DHTMLGoodies suite at
    • ASSIGNED TO: Nobody
  • Check-in cool conference status view
    • ASSIGNED TO: Darren
  • Move all JavaScript functions to their respective proper home. This is in dhtml.php in the helpers section. NO JAVASCRIPT SHOULD EXIST IN THE .CTP VIEWS! In addition, you must take into consideration common themes between JavaScript frameworks (this is not hard). For example, look at how frameworks make links within frames from YUI, DOJO and DHTMLGoodies.
    • ASSIGNED TO: Nobody
  • Begin creating helpers for basic tasks (assigning phone keypad keys to tasks/labels, etc.)
    • ASSIGNED TO: Darren

Release v0.2

Goal of this release is to add functionality (conferencing manager) to keep momentum on the project on a user-facing standpoint, but really most effort is in the XML/CURL design and X-Path framework. These are the most important steps to be done before the project can truly be modular.

EST Completion: November 8th, 2008

General Goals

  • Create a mediocre conferencing manager
  • Fix existing providers and extensions/users section so they are truly modular
    • Allow for other modules to add tabs to the extensions/users modules
    • Create custom XPath->set() functions so you can use XPath syntax to create elements, not just search them. This function MUST BE DATABASE COMPATIBLE (which is the hard part)
      • This should work with Ray (intra[lanman]'s) XML CURL stuff
  • Create an XML/CURL schema importer from the basic FreeSWITCH design (easy).
  • Clean up repeat code in models
  • Create an easy way to import DB schema for new users

Release v0.3

Goal of this release is to make everything truly modular so that other developers can start building actual modules on top of the core.

EST Completion: December 25th, 2008

General Goals

  • Add a test system to the front-page of the app telling what stuff is working & what isn't
  • Create XPath get/set that works with database in XML/CURL format as well as flat files + APIs, with the ability to still port to Asterisk and others later

* Model converts GUI -> db structure * XML_CURL Datasource (DOMDocument extended class) * Freeswitch Datasource (DOMDocument extended class) * Custom Database Style (GUI options)

  • Create XML/CURL interface
  • Create true APIs for menu interface, ensure modularity for adding/etc. menu items
  • Create the ability to easily add tabs to core modules (extensions/users and sip_profiles most likely candidates)
  • Publish directions for creating your own modules

Release v0.4

Goal of this release is to add a truly useful, applicable request that must be done at the core - multi-tenancy.

EST Completion: January 17th, 2009

General Goals

  • Add multi-tenancy support and a module for it by adding prefixes to most things.
    • sip_profiles
      • customerA_internal.xml --> customerA_internal, customerA_external (check for collisions of critical vars in customerA.xml)
    • dialplan
      • customerA_context.xml
    • Add the prefix ability to all file access areas and DB names.
  • Finish a second AJAX framework integration (DOJO or YUI) and publish

Release v0.5

Goal of this release is to make everything super pretty, super easy and super friendly for both developers and end-users. Turn anything possible into widgets/helpers on the dev end, and turn anything graphical/automate-able (is that a word?) or auto-detectable into a function/process/GUI element.

More specifics to come.

Personal tools