function instantiateHelpersAsHandlerAttributes($helpers = array()) { foreach ($helpers as $file => $helper) { $helper_class_name = AkInflector::camelize(AkInflector::demodulize(strstr($helper, 'Helper') ? $helper : $helper . 'Helper')); $helper_file_name = AkInflector::underscore($helper_class_name); if (is_int($file)) { $file = AK_HELPERS_DIR . DS . $helper_file_name . '.php'; } $full_path = preg_match('/[\\\\\\/]+/', $file); $file_path = $full_path ? $file : AK_LIB_DIR . DS . 'AkActionView' . DS . 'helpers' . DS . $file; if (is_file($file_path)) { include_once $file_path; } if (class_exists($helper_class_name)) { $attribute_name = $full_path ? $helper_file_name : substr($file, 0, -4); $this->_Handler->{$attribute_name} = new $helper_class_name(&$this->_Handler); if (method_exists($this->_Handler->{$attribute_name}, 'setController')) { $this->_Handler->{$attribute_name}->setController(&$this->_Handler); } elseif (method_exists($this->_Handler->{$attribute_name}, 'setMailer')) { $this->_Handler->{$attribute_name}->setMailer(&$this->_Handler); } if (method_exists($this->_Handler->{$attribute_name}, 'init')) { $this->_Handler->{$attribute_name}->init(); } $this->_HelperInstances[$attribute_name] =& $this->_Handler->{$attribute_name}; } } }
function cast() { $this->model_name = AkInflector::camelize($this->model_name); $this->model_file_path = AkInflector::toModelFilename($this->model_name); if (empty($this->actions) && !empty($this->controller_name) && strstr($this->controller_name, ',')) { $this->controller_name = ''; } $this->controller_name = empty($this->controller_name) ? AkInflector::pluralize($this->model_name) : AkInflector::camelize($this->controller_name); $this->controller_file_path = AkInflector::toControllerFilename($this->controller_name); $this->controller_class_name = str_replace(array('/', '::'), '_', $this->controller_name . 'Controller'); $this->controller_name = AkInflector::demodulize($this->controller_name); $this->controller_human_name = AkInflector::humanize($this->controller_name); $this->helper_name = (AkInflector::is_plural($this->controller_name) ? AkInflector::singularize($this->controller_name) : $this->controller_name) . 'Helper'; $this->helper_var_name = '$' . AkInflector::underscore($this->helper_name); $this->singular_name = AkInflector::underscore($this->model_name); $this->plural_name = AkInflector::pluralize($this->singular_name); $this->singular_controller_name = AkInflector::underscore($this->controller_name); $this->module_preffix = AkInflector::underscore(substr($this->controller_class_name, 0, strrpos($this->controller_class_name, '_'))); $this->module_preffix = empty($this->module_preffix) ? '' : DS . $this->module_preffix; $this->files = array('controller.php' => $this->controller_file_path, 'helper.php' => AK_HELPERS_DIR . $this->module_preffix . DS . trim($this->helper_var_name, '$') . '.php', 'layout' => AK_VIEWS_DIR . DS . 'layouts' . DS . $this->singular_controller_name . '.tpl', 'view_add' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . 'add.tpl', 'view_destroy' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . 'destroy.tpl', 'view_edit' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . 'edit.tpl', 'view_listing' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . 'listing.tpl', 'view_show' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . 'show.tpl', 'form' => AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . '_form.tpl'); $this->user_actions = array(); foreach ((array) @$this->actions as $action) { $this->user_actions[$action] = AK_VIEWS_DIR . $this->module_preffix . DS . $this->singular_controller_name . DS . $action . '.tpl'; } }
public function instantiateHelpersAsHandlerAttributes($helpers = array()) { $helpers_dir = AkConfig::getDir('helpers'); foreach ($helpers as $file => $helper) { if (empty($helper)) { continue; } $helper_class_name = AkInflector::camelize(AkInflector::demodulize(strstr($helper, 'Helper') ? $helper : $helper . 'Helper')); $helper_file_name = AkInflector::underscore($helper_class_name); if (is_int($file)) { $file = $helpers_dir . DS . $helper_file_name . '.php'; } $full_path = preg_match('/[\\\\\\/]+/', $file); $file_path = $full_path ? $file : AK_ACTION_PACK_DIR . DS . 'helpers' . DS . $file; if (is_file($file_path)) { include_once $file_path; } if (class_exists($helper_class_name)) { $attribute_name = $full_path ? $helper_file_name : substr($file, 0, -4); $this->_Handler->{$attribute_name} = new $helper_class_name($this->_Handler); if (method_exists($this->_Handler->{$attribute_name}, 'setController')) { $this->_Handler->{$attribute_name}->setController($this->_Handler); } elseif (method_exists($this->_Handler->{$attribute_name}, 'setMailer')) { $this->_Handler->{$attribute_name}->setMailer($this->_Handler); } if (method_exists($this->_Handler->{$attribute_name}, 'init')) { $this->_Handler->{$attribute_name}->init(); } $this->_HelperInstances[$attribute_name] = $this->_Handler->{$attribute_name}; } } }
/** * Returns $class_name in underscored form, with "_id" tacked on at the end. * This is for use in dealing with the database. * * @param string $class_name * @return string */ function foreignKey($class_name, $separate_class_name_and_id_with_underscore = true) { return AkInflector::underscore(AkInflector::demodulize($class_name)).($separate_class_name_and_id_with_underscore ? "_id" : "id"); }
/** * Creates an instance of each available helper and links it into into current controller. * * Per example, if a helper TextHelper is located into the file text_helper.php. * An instance is created on current controller * at $this->text_helper. This instance is also available on the view by calling $text_helper. * * Helpers can be found at lib/AkActionView/helpers (this might change in a future) */ function instantiateHelpers() { $helpers = $this->getDefaultHelpers(); $helpers = array_merge($helpers, $this->getApplicationHelpers()); $helpers = array_merge($helpers, $this->getPluginHelpers()); $helpers = array_merge($helpers, $this->getModuleHelper()); $helpers = array_merge($helpers, $this->getCurrentControllerHelper()); require_once AK_LIB_DIR . DS . 'AkActionView' . DS . 'AkActionViewHelper.php'; $available_helpers = array(); foreach ($helpers as $file => $helper) { $helper_class_name = AkInflector::camelize(AkInflector::demodulize(strstr($helper, 'Helper') ? $helper : $helper . 'Helper')); $full_path = preg_match('/[\\\\\\/]+/', $file); $file_path = $full_path ? $file : AK_LIB_DIR . DS . 'AkActionView' . DS . 'helpers' . DS . $file; include_once $file_path; if (class_exists($helper_class_name)) { $attribute_name = $full_path ? AkInflector::underscore($helper_class_name) : substr($file, 0, -4); $available_helpers[] = $attribute_name; $this->{$attribute_name} =& new $helper_class_name(&$this); if (method_exists($this->{$attribute_name}, 'setController')) { $this->{$attribute_name}->setController(&$this); } if (method_exists($this->{$attribute_name}, 'init')) { $this->{$attribute_name}->init(); } } } defined('AK_ACTION_CONTROLLER_AVAILABLE_HELPERS') ? null : define('AK_ACTION_CONTROLLER_AVAILABLE_HELPERS', join(',', $available_helpers)); }
function test_should_demodulize() { $this->assertEqual(AkInflector::demodulize('admin/dashboard_controller'), 'dashboard_controller'); $this->assertEqual(AkInflector::demodulize('Admin_DashboardController'), 'DashboardController'); $this->assertEqual(AkInflector::demodulize('Admin::Dashboard'), 'Dashboard'); $this->assertEqual(AkInflector::demodulize('User'), 'User'); }
* @author Bermi Ferrer <bermi a.t akelos c.om> * @copyright Copyright (c) 2002-2006, Akelos Media, S.L. http://www.akelos.org * @license GNU Lesser General Public License <http://www.gnu.org/copyleft/lesser.html> */ error_reporting(defined('AK_ERROR_REPORTING_ON_SCRIPTS') ? AK_ERROR_REPORTING_ON_SCRIPTS : 0); require_once AK_LIB_DIR . DS . 'Ak.php'; require_once AK_LIB_DIR . DS . 'AkObject.php'; require_once AK_LIB_DIR . DS . 'AkInflector.php'; defined('AK_SKIP_DB_CONNECTION') && AK_SKIP_DB_CONNECTION ? $dsn = '' : Ak::db(&$dsn); array_shift($argv); $options = $argv; require_once AK_LIB_DIR . DS . 'AkInstaller.php'; require_once AK_LIB_DIR . DS . 'utils' . DS . 'generators' . DS . 'AkelosGenerator.php'; $installer = array_shift($options); if (preg_match('/:{2}|\\//', $installer)) { $installer_class_name = AkInflector::camelize(AkInflector::demodulize($installer)) . 'Installer'; } else { $installer_class_name = AkInflector::camelize($installer) . 'Installer'; } $command = count($options) > 0 ? array_shift($options) : 'usage'; $installer = str_replace('::', '/', $installer); $file = AK_APP_DIR . DS . 'installers' . DS . rtrim(join('/', array_map(array('AkInflector', 'underscore'), explode('/', $installer . '/'))), '/') . '_installer.php'; function ak_print_available_installers($files, $preffix = '') { foreach ($files as $k => $file) { if (is_string($file)) { if (preg_match('/(.*)_installer\\.php$/', $file, $match)) { echo ' * ' . $preffix . $match[1] . "\n"; } } else { ak_print_available_installers($file, $k . '::');
function getAttribute($attribute, $inspect_for_callback_child_method = true) { static $watchdog; if ($attribute[0] == '_') { return false; } if ($inspect_for_callback_child_method === true && method_exists($this, 'get' . AkInflector::camelize($attribute))) { $watchdog[@$attribute] = @$watchdog[$attribute] + 1; if ($watchdog[$attribute] == 66) { if (!defined('AK_ACTIVE_RECORD_PROTECT_GET_RECURSION') || defined('AK_ACTIVE_RECORD_PROTECT_GET_RECURSION') && AK_ACTIVE_RECORD_PROTECT_GET_RECURSION) { trigger_error(Ak::t('You are calling recursivelly AkActiveRecord::getAttribute by placing parent::getAttribute() or parent::get() on your model "%method" method. In order to avoid this, set the 2nd paramenter of parent::getAttribute to FALSE. If this was the behaviour you expected, please define the constant AK_ACTIVE_RECORD_PROTECT_GET_RECURSION and set it to false', array('%method' => 'get' . AkInflector::camelize($attribute))), E_USER_ERROR); return false; } } $value = $this->{'get' . AkInflector::camelize($attribute)}(); return $this->getInheritanceColumn() != false ? AkInflector::demodulize($value) : $value; } if (isset($this->{$attribute}) || !isset($this->{$attribute}) && $this->isCombinedAttribute($attribute)) { if ($this->hasAttribute($attribute)) { if ($this->isCombinedAttribute($attribute)) { $this->composeCombinedAttribute($attribute); } return isset($this->{$attribute}) ? $this->{$attribute} : null; } elseif ($this->_internationalize && $this->_isInternationalizeCandidate($attribute)) { if (!empty($this->{$attribute}) && is_string($this->{$attribute})) { return $this->{$attribute}; } $current_locale = $this->getCurrentLocale(); if (!empty($this->{$attribute}[$current_locale]) && is_array($this->{$attribute})) { return $this->{$attribute}[$current_locale]; } return $this->getAttribute($current_locale . '_' . $attribute); } } if ($this->_internationalize) { return $this->getAttributeByLocale($attribute, is_bool($inspect_for_callback_child_method) ? $this->getCurrentLocale() : $inspect_for_callback_child_method); } return null; }
function Test_of_demodulize() { $this->assertEqual('Account', AkInflector::demodulize('MyApplication::Billing::Account')); }