function edit($template)
 {
     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';
     }
     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');
         } elseif ($this->response->html->request()->get('base_name') === 'plugins') {
             $path = $this->rootdir . '/web/base/plugins/aa_plugins';
         }
     }
     $files = $this->file->get_files($path . '/class/');
     $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++;
     }
     $controller = '';
     if (count($content) > 0) {
         $files = $this->file->get_files($path . '/lang');
         foreach ($content as $con) {
             if (isset($con['object']->lang)) {
                 $controller .= '<div class="name"><b>Controller:</b> ' . $con['class'] . '</div>';
                 $lfiles = array();
                 foreach ($files as $file) {
                     if (strpos($file['name'], '.' . $con['name'] . '.') !== false) {
                         $lang = substr($file['name'], 0, strpos($file['name'], '.'));
                         $lfiles[$lang] = $file['path'];
                     }
                 }
                 $msg = array();
                 foreach ($lfiles as $lang => $file) {
                     $error = array();
                     $ini = $this->file->get_ini($file);
                     foreach ($con['object']->lang as $k => $v) {
                         if (is_array($v)) {
                             foreach ($v as $key => $value) {
                                 if (isset($ini[$k]) && !array_key_exists($key, $ini[$k])) {
                                     $error['file'] = basename($file);
                                     $error['missing'][$k][$key] = '';
                                 } else {
                                     if (!isset($ini[$k])) {
                                         $error['file'] = basename($file);
                                         $error['missing'][$k][$key] = '';
                                     } else {
                                         unset($ini[$k][$key]);
                                     }
                                 }
                             }
                         } else {
                             if (!array_key_exists($k, $ini)) {
                                 $error['file'] = basename($file);
                                 $error['missing'][$k] = '';
                             } else {
                                 unset($ini[$k]);
                             }
                         }
                         if (isset($ini[$k]) && count($ini[$k]) < 1) {
                             unset($ini[$k]);
                         }
                     }
                     if (count($ini) < 1) {
                         unset($ini);
                     } else {
                         foreach ($ini as $i => $x) {
                             $error['file'] = basename($file);
                             if (!is_array($x)) {
                                 $error['supernumerous'][$i] = '';
                             } else {
                                 if (count($x) > 0) {
                                     foreach ($x as $xx => $vv) {
                                         $error['supernumerous'][$i][$xx] = '';
                                     }
                                 } else {
                                     $error['supernumerous'][$i] = '';
                                 }
                             }
                         }
                     }
                     $download = $this->response->html->a();
                     $download->label = 'download';
                     $download->href = $this->response->get_url($this->actions_name, 'download') . '&file=lang/' . basename($file) . '&mime=text/plain';
                     $download->target = '_blank';
                     $download->style = 'vertical-align:top;text-decoration:none;';
                     // check errors
                     if (count($error) < 1) {
                         $msg[] = '<div><b>' . $lang . '</b> <span style="color:green;vertical-align:top;">passed</span> ' . $download->get_string() . '</div>';
                     } else {
                         // cache output
                         ob_start();
                         $response->html->help($error);
                         $messages = trim(ob_get_contents());
                         // end cache
                         ob_end_clean();
                         if ($messages !== '') {
                             $txt = '<div style="margin: 0 0 5px 0;"><b>' . $lang . '</b> <span style="color:red;vertical-align:top;">failed</span> ' . $download->get_string() . '</div>';
                             $txt .= '<div style="height: 200px; border: 1px solid #91A7B4; overflow: auto; margin: 0 10px 10px 0;"><pre>';
                             $txt .= $messages;
                             $txt .= '</pre></div>';
                             $msg[] = $txt;
                         }
                     }
                 }
                 // handle message
                 if (count($msg) > 0) {
                     $controller .= '<div style="margin: 0 0 0 30px;">';
                     $controller .= implode('', $msg);
                     $controller .= '</div>';
                 }
             }
         }
     } else {
         $oop = false;
         foreach ($files as $file) {
             if (strripos($file['name'], 'controller') !== false && strripos($file['name'], 'about') !== false) {
                 $oop = true;
                 $controller = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is about controller only</div>';
                 break;
             }
         }
         if ($oop === false) {
             $controller = '<div>Plugin ' . $this->response->html->request()->get('plugin_name') . ' is not OOP</div>';
         }
     }
     $template->add($controller, 'controllers');
     // handle php errors
     $phpinfo = '';
     if ($this->response->html->request()->get('debug') !== '') {
         if (isset($GLOBALS['error_php']) && count($GLOBALS['error_php']) > 0) {
             $phpinfo .= implode('', $GLOBALS['error_php']);
         }
     }
     if ($phpinfo !== '') {
         $phpinfo = '<div class="phpinfobox">' . $phpinfo . '</div>';
     } else {
         $phpinfo = '&#160;';
     }
     $template->add($phpinfo, 'phpinfo');
     $template = $this->controller->__get_navi($template, 'lang');
     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++;
     }
     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;">&#160;</div> = Plugin</div>';
         $legend .= '<div><div class="controller" style="display: inline;padding: 5px;line-height:0px;margin:0px;font-size:0px;">&#160;</div> = Controller</div>';
         $legend .= '<div><div class="action" style="display: inline;padding: 5px;line-height:0px;margin:0px;font-size:0px;">&#160;</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.'&amp;controller='.$con['name'].'&amp'.implode('&amp;', $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.'&amp;controller='.$con['name'].'&amp'.implode('&amp;', $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 = '&#160;';
     }
     $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;
 }
Example #3
0
 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 . '&amp;' . $plugin . '&amp;' . $controller . '&amp;' . $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 = '&#160;';
     }
     $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;
 }