middleware(['sysadmin', '2fa']); } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $data = [ 'text' => "", 'values' => [], ]; return view('iq.tools.links', $data); } public function store() { die("nothing to set"); //$this->readNodeAndSaveToTree(); //$this->cleanTextTravelGuide(); //$this->h1ToTitleTravelGuide(); } public function h1ToTitleTravelGuide() { $TravelGuides = TravelGuide::all(); foreach ($TravelGuides as $travelGuide){ if(strpos($travelGuide->full_text,'

' )){ $dom = new \DOMDocument('1.0', 'utf-8'); @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); $elements = $dom->getElementsByTagName('h1'); foreach ($elements as $element) { if($element->nodeValue != ""){ var_dump($travelGuide->id); var_dump($element->nodeValue); echo "
"; var_dump($travelGuide->name); echo "
"; echo "--"; echo "
"; $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $travelGuide->full_text); $travelGuide->name = $element->nodeValue; $travelGuide->full_text = $new_text; $travelGuide->save(); } } } } die("done"); } public function cleanTextTravelGuide() { $TravelGuides = TravelGuide::all(); foreach ($TravelGuides as $travelGuide){ $new_text = \App\Services\Util::cleanHTML($travelGuide->full_text); if(strcmp($travelGuide->full_text, $new_text) != 0){ $travelGuide->full_text = $new_text; $travelGuide->save(); var_dump($travelGuide->id); echo "
"; } } die("done"); } public function readNodeAndSaveToTree(){ $input = Request::all(); $ret = []; if(isset($input['text'])){ $out = $this->ul_to_array($input['text']); $this->array_to_nodes($out); } die("done"); $data = [ 'text' => $input['text'], 'values' => $ret, ]; return view('iq.tools.links', $data); } public function array_to_nodes($array, $lvl = 1, $parent_id = 1, $pos=100){ if(is_array($array)){ foreach ($array as $node){ if(isset($node['slug'])){ $slug = substr($node['slug'], 0, 80); // $slug = substr($node['slug'], 0, strrpos($slug, " ")); $name = substr($node['name'], 0, 255); // $name = substr($node['name'], 0, strrpos($name, " ")); $data = [ 'tree_id' => 1, 'parent_id' => $parent_id, 'lvl' => $lvl, 'name' => $name, 'identifier' => $slug, 'active' => false, 'pos' => $pos++, ]; $tree_node = IQContentTreeNode::create($data); $travel_guides = TravelGuide::whereSlug($node['slug'])->get(); foreach ($travel_guides as $travel_guide){ if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0) { IQContentSite::create(['tree_node_id' => $tree_node->id, 'travel_guide_id' => $travel_guide->id]); } } } if(isset($node['children']) && is_array($node['children'])){ $this->array_to_nodes($node['children'], $lvl + 1, $tree_node->id, $pos); } } } } public function ul_to_array($ol){ if(is_string($ol)){ if(!$ol = simplexml_load_string($ol)) { trigger_error("Syntax error in UL/LI structure"); return FALSE; } return $this->ul_to_array($ol); } else if(is_object($ol)){ $output = array(); foreach($ol->li as $li){ $tmp = false; if(isset($li->ol)){ $tmp = $this->ul_to_array($li->ol); } if($li->count()){ $str = (string) $li; $a = new \SimpleXMLElement($li->children()->asXML()); $str = (string) $a[0]." ".$str; $str = str_replace("\n", "", $str); $str = str_replace("\r", "", $str); $str = str_replace("\t", "", $str); $str = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str); if(trim($str) !== "" && $str !== null){ $slug = (string) $a['href']; $link = explode("/", $slug); $link1 = array_pop($link); $link1 = str_replace('.htm', '',$link1); $output[] = ['slug'=> $link1, 'name'=>$str, 'children'=>$tmp]; } }else{ $str = (string) $li; $str = str_replace("\n", "", $str); $str = str_replace("\r", "", $str); $str = str_replace("\t", "", $str); if(trim($str) !== "" && $str !== null){ $output[] = ['slug'=>'', 'name'=>$str, 'children'=>$tmp]; } } } return $output; } else { return FALSE; } } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function rindex() { $data = [ 'text' => "", 'values' => [], ]; return view('iq.content.tools.redirects', $data); } public function rstore() { $iqContentTree = IQContentTree::find(2); $this->makeTree($iqContentTree); $input = Request::all(); $ret = []; if(isset($input['text'])){ $dom = new \DOMDocument('1.0', 'utf-8'); @$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8')); $tags = ['ol']; foreach ($tags as $tag){ $domElements = []; $elements = $dom->getElementsByTagName($tag)->item(0); foreach($elements as $node){ foreach($node->childNodes as $child) { $ret[] = array($child->nodeName => $child->nodeValue); } } } /* $tags = ['a']; foreach ($tags as $tag){ $domElements = []; $elements = $dom->getElementsByTagName($tag); foreach ($elements as $element) { $domElements[] = $element; } foreach ($domElements as $domElement) { $r = "-----"; $href = $domElement->getAttribute('href'); $link = explode("/", $href); $link1 = array_pop($link); $link1 = str_replace('.html', '',$link1); $link1 = str_replace('-', '',$link1); if(isset($this->tree[$link1])){ $r = $this->tree[$link1]; }else{ $link1 = array_pop($link); $link1 = str_replace('.html', '',$link1); $link1 = str_replace('-', '',$link1); if(isset($this->tree[$link1])){ $r = $this->tree[$link1]; } } $ret[] = "Redirect 301 /".$href." ".$r; } }*/ } $data = [ 'text' => $input['text'], 'values' => $ret, ]; return view('iq.content.tools.redirects', $data); } public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "") { if ($parent_id) { //where('active', true) $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get(); } else { $url = "/" . $iq_content_tree->identifier . "/"; $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get(); } foreach ($tree_nodes as $node) { $children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count(); $this->tree[str_replace('-', '', $node->identifier)] = url($url . $node->identifier); if ($children) { $this->makeTree($iq_content_tree, $lvl + 1, $node->id, $url . $node->identifier . "/"); } } return true; } }