function coder_upgrade_upgrade_call_jquery_ui_add_alter in Coder 7
Same name and namespace in other branches
- 7.2 coder_upgrade/conversions/call.inc \coder_upgrade_upgrade_call_jquery_ui_add_alter()
Implements hook_upgrade_call_jquery_ui_add_alter().
File
- coder_upgrade/
conversions/ call.inc, line 1785 - Provides conversion routines applied to function calls.
Code
function coder_upgrade_upgrade_call_jquery_ui_add_alter(&$node, &$reader) {
// Create helper objects.
$editor = PGPEditor::getInstance();
// Get the function call object.
$item =& $node->data;
// http://drupal.org/node/224333#jquery_ui
// jquery_ui_add is now drupal_add_library which loads a single library.
$name =& $item->name;
$name['value'] = 'drupal_add_library';
/*
* Note: This is an interesting pattern that can be applied elsewhere.
* If the parameter is a variable, then find the variable assignment and
* replace the operand accordingly. Then go through the rest of the code.
*/
$operand = $item
->getParameter()
->getElement();
if ($item
->getParameter()
->isType(T_VARIABLE)) {
// Parameter is a variable.
$variable = $item
->getParameter()
->getElement()
->findNode('value');
$parent = $item->parent;
// TODO This single search won't find multiple assignments to array variable.
$statement = $parent->container
->searchBackward('PGPAssignment', 'values', 0, $variable, $parent);
if ($statement) {
$operand =& $statement->values
->getElement()
->findNode('operand', 'backward');
cdp($operand);
}
}
// Examine the type of the operand in the parameter.
if (is_array($operand)) {
// This is a simple string.
$value = trim($operand['value'], "'\"");
$editor
->setParameter($item, 0, "'{$value}'");
}
elseif (get_class($operand) == 'PGPArray') {
$current = $operand->values
->first();
while ($current->next != NULL) {
if ($current->type == 'value') {
$values[] = $current->data
->toString();
}
$current = $current->next;
}
$editor
->setParameter($item, 0, array_pop($values));
if ($values) {
$parent =& $item->parent;
$container =& $parent->container;
foreach ($values as $value) {
$temp = $editor
->textToStatements("drupal_add_library('system', {$value})")
->getElement();
$container
->insertBefore($parent, $temp);
}
}
}
else {
// elseif (get_class($operand) == 'PGPOperand') {
// This would be a variable and should not occur.
$statement = $editor
->commentToStatement("// TODO {$operand->toString()} needs to be a string or multiple calls to drupal_add_library need to be made.");
$item
->insertStatementBefore($statement);
}
// Insert a new first parameter.
$editor
->insertParameter($item, 0, "'system'");
}