示例#1
0
 public function testoverride_value_to_string_recursive()
 {
     //execute the method and test if it returns expected values
     //without keys
     $tempArray = array('Key1' => 'value1', 'Key2' => 'value2');
     $expected = "\$tempArray=array (\n  'Key1' => 'value1',\n  'Key2' => 'value2',\n);";
     $actual = override_value_to_string_recursive('', 'tempArray', $tempArray);
     $this->assertSame($actual, $expected);
     //with keys
     $tempArray = array();
     $tempArray['Key1']['Key2'] = array('Key3' => 'value', 'Key4' => 'value');
     $expected = "\$tempArray['key1']['key2']=array (\n  'Key1' => \n  array (\n    'Key2' => \n    array (\n      'Key3' => 'value',\n      'Key4' => 'value',\n    ),\n  ),\n);";
     $actual = override_value_to_string_recursive(array('key1', 'key2'), 'tempArray', $tempArray);
     //var_dump( nl2br($actual));
     $this->assertSame($actual, $expected);
 }
示例#2
0
 protected function writeVardefExtension($bean_name, $field, $def_override)
 {
     //Hack for the broken cases module
     $vBean = $bean_name == "aCase" ? "Case" : $bean_name;
     $file_loc = "{$this->base_path}/sugarfield_{$field->name}.php";
     $out = "<?php\n // created: " . date('Y-m-d H:i:s') . "\n";
     foreach ($def_override as $property => $val) {
         $out .= override_value_to_string_recursive(array($vBean, "fields", $field->name, $property), "dictionary", $val) . "\n";
     }
     $out .= "\n ?>";
     if (!file_exists($this->base_path)) {
         mkdir_recursive($this->base_path);
     }
     if ($fh = @sugar_fopen($file_loc, 'w')) {
         fputs($fh, $out);
         fclose($fh);
         return true;
     } else {
         return false;
     }
 }
 public function test_override_recursive_helper()
 {
     $key_names = array(1, 2, 3, 4, 5);
     $array_name = 'name';
     $value = 'foo';
     $expected = '$name[1][2][3][4][5]=' . "'" . $value . "';";
     $this->assertEquals($expected, override_value_to_string_recursive($key_names, $array_name, $value));
 }
 /**
  * Change old labels to new ones in all $module subpanels
  * @param $module
  * @return bool
  */
 public function upgradeSubpanelModuleLabels($module)
 {
     $upgradeLabels = $this->upgradeLabels[$module];
     $upgradeDriver = $this->upgrader;
     $upgraded = false;
     // upgrade viewdefs
     $path = "custom/modules/{$module}/clients/base/views/subpanel-for-*/subpanel-for-*.php";
     foreach (glob($path) as $scanFile) {
         $viewdefs = array();
         include $scanFile;
         // Modification flag
         $changed = false;
         array_walk_recursive($viewdefs, function (&$value, $key) use(&$changed, $upgradeLabels, $upgradeDriver, $scanFile) {
             if ('label' == $key && isset($upgradeLabels[$value])) {
                 $upgradeDriver->log(sprintf('FixCustomLabelsForCoreModules: Fix label name from "%s" to "%s" in file "%s"', $value, $upgradeLabels[$value], $scanFile));
                 $value = $upgradeLabels[$value];
                 $changed = true;
             }
         });
         if ($changed) {
             $this->backupFile($scanFile);
             $upgraded = $upgraded || $changed;
             $keyNames = array();
             $viewdefsWrite = $viewdefs;
             // collect key names for array path "{module}/{platform}/{view_type}/{view}"
             for ($i = 0; $i < 4; $i++) {
                 if (1 != count($viewdefsWrite)) {
                     break;
                 }
                 $keyNames[] = key($viewdefsWrite);
                 $viewdefsWrite = $viewdefsWrite[key($viewdefsWrite)];
             }
             $out = "<?php\n// created: ' . date('Y-m-d H:i:s')\n";
             $out .= override_value_to_string_recursive($keyNames, 'viewdefs', $viewdefsWrite);
             if (sugar_file_put_contents_atomic($scanFile, $out) !== false) {
                 // record custom writes to file map
                 SugarAutoLoader::addToMap($scanFile);
             }
             unset($out);
             unset($viewdefsWrite);
         }
         unset($viewdefs);
     }
     // upgrade subpanel_layout
     $path = "custom/modules/{$module}/metadata/subpanels/*.php";
     foreach (glob($path) as $scanFile) {
         $subpanel_layout = array();
         include $scanFile;
         // Modification flag
         $changed = false;
         array_walk_recursive($subpanel_layout, function (&$value, $key) use(&$changed, $upgradeLabels, $upgradeDriver, $scanFile) {
             if ('vname' == $key && isset($upgradeLabels[$value])) {
                 $upgradeDriver->log(sprintf('FixCustomLabelsForCoreModules: Fix label name from "%s" to "%s" in file "%s"', $value, $upgradeLabels[$value], $scanFile));
                 $value = $upgradeLabels[$value];
                 $changed = true;
             }
         });
         if ($changed) {
             $upgraded = $upgraded || $changed;
             $this->backupFile($scanFile);
             write_array_to_file('subpanel_layout', $subpanel_layout, $scanFile, 'w');
         }
         unset($subpanel_layout);
     }
     return $upgraded;
 }
示例#5
0
 /**
  * Write def to file, like DynamicField.
  * @param array $def
  * @param string $mod
  */
 public function writeDef($def, $mod)
 {
     $base_path = "custom/Extension/modules/{$mod}/Ext/Vardefs";
     $fn = "{$base_path}/sugarfield_{$def['name']}.php";
     $seed = BeanFactory::getBean($mod);
     $this->removeField($seed, $def['name']);
     $vBean = $mod == "aCase" ? "Case" : $mod;
     $out = "<?php\n // created: " . date('Y-m-d H:i:s') . "\n";
     foreach ($def as $property => $val) {
         $out .= override_value_to_string_recursive(array($vBean, "fields", $def['name'], $property), "dictionary", $val);
         $out .= "\n";
     }
     file_put_contents($fn, $out);
     $this->log("New file {$fn} for field {$def['name']} of object {$seed->object_name} created");
 }