function edit($template) { // cache output ob_start(); require_once $this->openqrm->get('webdir') . '/class/htmlobjects/htmlobject.response.class.php'; $response = new htmlobject_response($this->response->html, $this->response->id); $response->html->debug(); require_once $this->openqrm->get('basedir') . '/plugins/development/web/class/dummyuser.class.php'; $dummy = new dummyuser('xxx'); require_once $this->openqrm->get('basedir') . '/web/base/class/openqrm.class.php'; $oq = new openqrm($this->file, $dummy, $response); if ($this->response->html->request()->get('plugin_name') !== '') { $path = $this->rootdir . '/plugins/' . $this->response->html->request()->get('plugin_name') . '/web/class/'; } if ($this->response->html->request()->get('base_name') !== '') { if ($this->response->html->request()->get('base_name') !== 'plugins') { $path = $this->rootdir . '/web/base/server/' . $this->response->html->request()->get('base_name') . '/class/'; } elseif ($this->response->html->request()->get('base_name') === 'plugins') { $path = $this->rootdir . '/web/base/plugins/aa_plugins/class/'; } } $files = $this->file->get_files($path); $name = array(); $objs = array(); if (is_array($files)) { foreach ($files as $file) { if (strripos($file['name'], 'controller') !== false && strripos($file['name'], 'about') === false) { require_once $file['path']; $class = str_replace('.class.php', '', $file['name']); $class = str_replace('.', '_', $class); $class = str_replace('-', '_', $class); $class = new $class($oq, $response->response()); $objs[] = $class; $name[] = str_replace('.controller.class.php', '', $file['name']); } } } $content = array(); $i = 0; foreach ($objs as $obj) { $content[$i]['name'] = $name[$i]; $content[$i]['object'] = $obj; $content[$i]['class'] = get_class($obj); if (get_class_methods($obj)) { $content[$i]['methods'] = get_class_methods($obj); } else { $content[$i]['methods'] = ''; } $content[$i]['vars'] = get_class_vars(get_class($obj)); $i++; } if ($this->response->html->request()->get('plugin_name') !== '') { $controllers = '<div class="plugin"><div class="name">plugin=' . $this->response->html->request()->get('plugin_name') . '</div>'; } else { if ($this->response->html->request()->get('base_name') !== '') { $controllers = '<div class="plugin"><div class="name">base=' . $this->response->html->request()->get('base_name') . '</div>'; } } $legend = ''; if (count($content) > 0) { $tpldir = dirname($path) . '/tpl/'; $files = $this->file->get_files($tpldir); $legend = '<div class="legend">'; $legend .= '<div><div class="plugin" style="display: inline;padding: 5px;line-height:0px;margin:0px;font-size:0px;"> </div> = Plugin</div>'; $legend .= '<div><div class="controller" style="display: inline;padding: 5px;line-height:0px;margin:0px;font-size:0px;"> </div> = Controller</div>'; $legend .= '<div><div class="action" style="display: inline;padding: 5px;line-height:0px;margin:0px;font-size:0px;"> </div> = Action</div>'; $legend .= '</div>'; foreach ($content as $con) { $controllers .= '<div class="controller">'; foreach ($con as $k => $v) { if ($k === 'name') { $controllers .= '<div class="name">controller=' . $v . '</div>'; } if ($k === 'methods') { if (is_array($v)) { $controllers .= '<div class="methods">'; $i = 0; foreach ($v as $value) { $css = ''; if (!in_array($value, $this->methods) && strpos($value, '__') === false && stripos($value, 'reload') === false) { // handle duplicate if ($value === 'duplicate') { $value = 'clone'; } $file = $con['name'] . '.' . str_replace('_', '-', $value) . '.class.php'; if ($this->file->exists($path . $file)) { $css = 'action'; if ($i === 0) { $i++; $css = 'action first'; } $controllers .= '<div class="' . $css . '"><span>' . $value . '</span><br>'; require_once $path . $file; $class = str_replace('.class.php', '', $file); $class = str_replace('.', '_', $class); $class = str_replace('-', '_', $class); $tpl = str_replace('_', '-', $class) . '.tpl.php'; if (!$this->file->exists($tpldir . $tpl)) { $tpl = '<div><b class="error">ERROR:</b> missing template ' . $tpl . '</div>'; } else { foreach ($files as $key => $file) { if ($file['name'] === $tpl) { unset($files[$key]); } } $tpl = '<div><b class="success">PASSED:</b> found template ' . $tpl . '</div>'; } $controllers .= $tpl; /* $class = new $class($oq, $con['object']->response->response(), $con['object']); $class->tpldir = dirname($path).'/tpl/'; // check vars #$this->__check_action_vars($class, $con, $value); // check lang if(isset($con['object']->lang[$value])) { $class->lang = $con['object']->lang[$value]; } else { $class->lang = $con['object']->lang; } $x = new ReflectionObject($class); if($x->hasMethod('action')) { $controllers .= $class->action()->get_string(); if($str !== '') { $controllers .= '<div class="params"><b>Params</b>'; $controllers .= $str; $controllers .= '</div>'; if($this->response->html->request()->get('plugin_name') !== '') { $p = $this->response->html->request()->get('plugin_name'); $tag = 'plugin'; } else if($this->response->html->request()->get('base_name') !== '') { $p = $this->response->html->request()->get('base_name'); $tag = 'base'; } $controllers .= '<div class="link"><b>Link:</b> ?'.$tag.'='.$p.'&controller='.$con['name'].'&'.implode('&', $url).'</div>'; } $params = $x->getMethod('get_response')->getParameters(); $res = $class->get_response(); if(isset($res->form)) { $str = ''; $elem = $res->form->get_elements(); if(is_array($elem) && count($elem) > 0) { foreach($elem as $key => $e) { if($e instanceof htmlobject_box) { // check elements name if(isset($e->__elements[0]->name) && $e->__elements[0]->name !== '') { $required = ''; if(isset($res->form->__data[$key]['required'])) { $required = ' *'; } $regex = ''; if(isset($res->form->__data[$key]['validate']['regex'])) { $regex = ' ('.$res->form->__data[$key]['validate']['regex'].')'; } $str .= '<span>'.$e->__elements[0]->name.$required.$regex.'</span>'; $url[] = $e->__elements[0]->name.'=..'; } } else { if(isset($e->name) && $e->name !== $con['vars']['actions_name']) { if($key !== 'submit' && $key !== 'cancel') { $str .= '<span><strong>'.$e->name.'</strong></span>'; $url[] = $e->name.'=..'; } else { $str .= '<span><i>'.$e->name.'</i></span>'; if($key !== 'cancel') { $url[] = $e->name.'=submit'; } } } } } if($str !== '') { $controllers .= '<div class="params"><b>Params</b>'; $controllers .= $str; $controllers .= '</div>'; if($this->response->html->request()->get('plugin_name') !== '') { $p = $this->response->html->request()->get('plugin_name'); $tag = 'plugin'; } else if($this->response->html->request()->get('base_name') !== '') { $p = $this->response->html->request()->get('base_name'); $tag = 'base'; } $controllers .= '<div class="link"><b>Link:</b> ?'.$tag.'='.$p.'&controller='.$con['name'].'&'.implode('&', $url).'</div>'; } } } } else { $elem = $class->response->params; if(is_array($elem) && count($elem) > 0) { $str = ''; foreach($elem as $key => $e) { $str .= '<span><strong>'.$key.'</strong></span>'; } if($str !== '') { $controllers .= '<div class="params"><b>Params</b>'; $controllers .= $str; $controllers .= '</div>'; } } } */ $controllers .= '</div>'; } else { $GLOBALS['error_action'][] = '<div><b class="error">ACTION_ERROR:</b> missing file <b>' . $file . '</b> for action ' . $value . '</div>'; } } } $controllers .= '</div>'; } } } $controllers .= '</div>'; } // supernumerous files foreach ($files as $file) { if (strripos($file['name'], 'about') === false) { $GLOBALS['error_action'][] = '<div><b class="error">TEMPLATE_NOTICE: </b> Found supernumerous file ' . $file['name'] . '</div>'; } } $controllers .= '</div>'; } else { $oop = false; foreach ($files as $file) { if (strripos($file['name'], 'controller') !== false && strripos($file['name'], 'about') !== false) { $oop = true; $controllers = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is about controller only</div>'; break; } } if ($oop === false) { $controllers = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is not OOP</div>'; } } $template->add($controllers, 'controllers'); $template->add($legend, 'legend'); // handle errors $phpinfo = ''; if ($this->response->html->request()->get('debug') !== '') { if (isset($GLOBALS['error_controller']) && count($GLOBALS['error_controller']) > 0) { $phpinfo .= implode('', $GLOBALS['error_controller']); } if (isset($GLOBALS['error_action']) && count($GLOBALS['error_action']) > 0) { $phpinfo .= implode('', $GLOBALS['error_action']); } if (isset($GLOBALS['error_php']) && count($GLOBALS['error_php']) > 0) { $phpinfo .= implode('', $GLOBALS['error_php']); } $messages = trim(ob_get_contents()); if ($messages !== '') { $phpinfo .= '<b>HTMLOBJECTS DEBUG:</b><br>' . $messages; } } // end cache ob_end_clean(); if ($phpinfo !== '') { $phpinfo = '<div class="phpinfobox">' . $phpinfo . '</div>'; } else { $phpinfo = ' '; } $template->add($phpinfo, 'phpinfo'); $template = $this->controller->__get_navi($template, 'template'); // event cleanup, some methods creating events if constructed without parameters $event = new event(); $event->remove_by_description('Could not create instance of'); return $template; }
function edit($template) { // cache output ob_start(); require_once $this->openqrm->get('webdir') . '/class/htmlobjects/htmlobject.response.class.php'; $response = new htmlobject_response($this->response->html, $this->response->id); $response->html->debug(); require_once $this->openqrm->get('basedir') . '/plugins/development/web/class/dummyuser.class.php'; $dummy = new dummyuser('xxx'); require_once $this->openqrm->get('basedir') . '/web/base/class/openqrm.class.php'; $oq = new openqrm($this->file, $dummy, $response); if ($this->response->html->request()->get('plugin_name') !== '') { $path = $this->rootdir . '/plugins/' . $this->response->html->request()->get('plugin_name') . '/web/class/'; } if ($this->response->html->request()->get('base_name') !== '') { if ($this->response->html->request()->get('base_name') !== 'plugins') { $path = $this->rootdir . '/web/base/server/' . $this->response->html->request()->get('base_name') . '/class/'; } elseif ($this->response->html->request()->get('base_name') === 'plugins') { $path = $this->rootdir . '/web/base/plugins/aa_plugins/class/'; } } $files = $this->file->get_files($path); $name = array(); $objs = array(); if (is_array($files)) { foreach ($files as $file) { if (strripos($file['name'], 'controller') !== false && strripos($file['name'], 'about') === false) { require_once $file['path']; $class = str_replace('.class.php', '', $file['name']); $class = str_replace('.', '_', $class); $class = str_replace('-', '_', $class); $class = new $class($oq, $response->response()); $objs[] = $class; $name[] = str_replace('.controller.class.php', '', $file['name']); } } } $content = array(); $i = 0; foreach ($objs as $obj) { $content[$i]['name'] = $name[$i]; $content[$i]['object'] = $obj; $content[$i]['class'] = get_class($obj); if (get_class_methods($obj)) { $content[$i]['methods'] = get_class_methods($obj); } else { $content[$i]['methods'] = ''; } $content[$i]['vars'] = get_class_vars(get_class($obj)); $i++; } $legend = ''; $doc = ''; if ($this->response->html->request()->get('plugin_name') !== '') { $plugin = 'plugin=' . $this->response->html->request()->get('plugin_name'); $action = 'plugin'; } else { if ($this->response->html->request()->get('base_name') !== '') { $plugin = 'base=' . $this->response->html->request()->get('base_name'); $action = 'base'; } } if (count($content) > 0) { foreach ($content as $con) { foreach ($con as $k => $v) { if ($k === 'name') { $controller = 'controller=' . $v; } if ($k === 'methods') { if (is_array($v)) { $i = 0; foreach ($v as $value) { $css = ''; if (stripos($value, 'api') !== false && $controller !== 'controller=development') { $file = $con['name'] . '.' . str_replace('_', '-', $value) . '.class.php'; if ($this->file->exists($path . $file)) { $css = 'action'; if ($i === 0) { $i++; $css = 'action first'; } require_once $path . $file; $class = str_replace('.class.php', '', $file); $class = str_replace('.', '_', $class); $class = str_replace('-', '_', $class); $class = new $class($con['object']); // check lang if (isset($con['object']->lang[$value])) { $class->lang = $con['object']->lang[$value]; } else { $class->lang = $con['object']->lang; } $t = $this->__template($path . $file); $doc .= '<div class="link"><b>Link:</b> api.php?action=' . $action . '&' . $plugin . '&' . $controller . '&' . $con['vars']['actions_name'] . '=...</div>'; $doc .= $t->get_string(); } else { $GLOBALS['error_action'][] = '<div><b class="error">ACTION_ERROR:</b> missing file <b>' . $file . '</b> for action ' . $value . '</div>'; } } } } } } } } else { $oop = false; foreach ($files as $file) { if (strripos($file['name'], 'controller') !== false && strripos($file['name'], 'about') !== false) { $oop = true; $doc = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is about controller only</div>'; break; } } if ($oop === false) { $doc = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is not OOP</div>'; } } if ($doc === '') { $doc = '<div>Plugin has no API</div>'; } $template->add($doc, 'controllers'); $template->add($legend, 'legend'); // handle errors $phpinfo = ''; if ($this->response->html->request()->get('debug') !== '') { if (isset($GLOBALS['error_controller']) && count($GLOBALS['error_controller']) > 0) { $phpinfo .= implode('', $GLOBALS['error_controller']); } if (isset($GLOBALS['error_action']) && count($GLOBALS['error_action']) > 0) { $phpinfo .= implode('', $GLOBALS['error_action']); } if (isset($GLOBALS['error_php']) && count($GLOBALS['error_php']) > 0) { $phpinfo .= implode('', $GLOBALS['error_php']); } $messages = trim(ob_get_contents()); if ($messages !== '') { $phpinfo .= '<b>HTMLOBJECTS DEBUG:</b><br>' . $messages; } } // end cache ob_end_clean(); if ($phpinfo !== '') { $phpinfo = '<div class="phpinfobox">' . $phpinfo . '</div>'; } else { $phpinfo = ' '; } $template->add($phpinfo, 'phpinfo'); $template = $this->controller->__get_navi($template, 'api'); // event cleanup, some methods creating events if constructed without parameters $event = new event(); $event->remove_by_description('Could not create instance of'); return $template; }