Пример #1
0
 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};
         }
     }
 }
Пример #2
0
 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';
     }
 }
Пример #3
0
 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};
         }
     }
 }
Пример #4
0
 /**
 * 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");
 }
Пример #5
0
 /**
  * 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));
 }
Пример #6
0
 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');
 }
Пример #7
0
 * @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 . '::');
Пример #8
0
 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;
 }
Пример #9
0
 function Test_of_demodulize()
 {
     $this->assertEqual('Account', AkInflector::demodulize('MyApplication::Billing::Account'));
 }