/** * Add keyword */ function editTags() { JRequest::checkToken() or die('Invalid Token'); //$user =& JFactory::getUser(); //$model =& $this->getModel('akseo'); $id = JRequest::getInt('artid'); $newTag = JRequest::getWord('newTag'); $tagArray = JRequest::getVar('tags', '', 'post', 'array'); $tagEdit = JRequest::getInt('tagEdit'); $row =& JTable::getInstance('content'); $row->load($id); //if tags selected, remove from keywords if (isset($tagArray) and !empty($tagArray)) { $keywordArray = explode(",", $row->metakey); $newKeys = array_diff($keywordArray, $tagArray); $row->metakey = implode(",", $newKeys); } if (isset($newTag)) { $row->metakey = $row->metakey . ', ' . $newTag; } if (isset($newTag) or isset($newKeys)) { if (!$row->save($row)) { return JError::raiseWarning(500, $row->getError()); } } //$article = $model->getOptions($user->id); return plgSystemAddKeywords::tagList($row, $addkeyParams = null, $tagEdit, $ajax = 1); }
private function generateDescription($oldDesc, $text, $processGlobals) { // Description to preserve if ($this->addkeyParams->preserveDesc == 1) { //$oldEncoding = plgSystemAddKeywords::fixEncoding($oldDesc); $oldDesc = html_entity_decode($oldDesc, ENT_QUOTES, "UTF-8"); plgSystemAddKeywords::cleanWhitespace($oldDesc); if (preg_match('#{([^}][\\s\\S]*)}#u', $oldDesc, $matches)) { $savedDesc = $matches[1]; if (JString::strpos($savedDesc, "[start]")) { $position = "start"; $savedDesc = JString::str_ireplace("[start]", "", $savedDesc); } else { $position = "end"; } } } //$encoding = plgSystemAddKeywords::fixEncoding($text); $text = html_entity_decode($text, ENT_QUOTES, "UTF-8"); // Start cleaning up the article text //$text = strip_tags($text); // Cleans up plugin calls $text = preg_replace('#{[^}]*?}(?(?=[^{]*?{\\/[^}]*?})[^{]*?{\\/[^}]*?})#u', '', $text); // Get rid of all forms of whitespace except single spaces //plgSystemAddKeywords::cleanWhitespace($text); $text = preg_replace('#[\\s]{2,}#u', ' ', $text); // Use sentence, word or char count to make description // Char count is now the fallback method if ($this->addkeyParams->descPrimary == 'sentence') { // Setup pattern to find sentences and create description depending on defined number of sentences $description = ""; $pattern = '#\\b(.+?[\\.|\\!|\\?])#u'; for ($i = 0; $i < $this->addkeyParams->descSentCount; $i++) { $offset = ""; if (preg_match($pattern, $text, $matches)) { $match = $matches[1]; } else { break; } $description .= " " . $match; $offset = JString::strpos($text, $match); $offset += strlen($match); $text = JString::substr($text, $offset); } } if ($this->addkeyParams->descPrimary == 'word') { $explode = explode(' ', JString::trim($text)); $string = ''; for ($i = 0; $i < $this->addkeyParams->descWordCount; $i++) { if (isset($explode[$i])) { $string .= $explode[$i] . " "; } else { break; } } $description = JString::trim($string); } // If description is null, fallback to char count if ($this->addkeyParams->descPrimary == 'char' or $description == '') { $description = JString::substr(JString::trim($text), 0, $this->addkeyParams->descCharCount); } // Add in the preserved description if (isset($savedDesc)) { if ($position == "start") { $description = JString::trim($savedDesc) . " " . JString::trim($description); } elseif ($position == "end") { $description = JString::trim($description) . " " . JString::trim($savedDesc); } } if ($this->addkeyParams->dotdotdot) { if (!JString::strpos($description, '...')) { $description .= '...'; } } if ($processGlobals) { $this->akProcessDesc = 1; } return JString::trim($description); }