/** * Copy the article with extrafields * * @access public * @since 1.5 */ public function copyArticle($article, $oldid) { $app = JFactory::getApplication(); //COPY AND SAVE LIKE COPY $newid = $article->id; if (!empty($oldid)) { $db =& JFactory::getDBO(); //COPY __fieldsattach_values VALUES TABLE $query = 'SELECT * FROM #__fieldsattach_values as a WHERE a.articleid = ' . $oldid; //Log plgSystemfieldsattachment::writeLog("function copyArticle log1: " . $query); $db->setQuery($query); $results = $db->loadObjectList(); if ($results) { foreach ($results as $result) { $query = 'SELECT * FROM #__fieldsattach_values as a WHERE a.articleid = ' . $newid . ' AND a.fieldsid=' . $result->fieldsid; $db->setQuery($query); $obj = $db->loadObject(); if (!empty($obj)) { //update //$query = 'UPDATE #__fieldsattach_values SET value="'.$result->valor.'" WHERE id='.$result->id ; //$db->setQuery($query); //echo "<br>".$query; //$db->query(); } else { //insert $query = 'INSERT INTO #__fieldsattach_values(articleid,fieldsid,value) VALUES (' . $newid . ',\'' . $result->fieldsid . '\',\'' . $result->value . '\' ) '; $db->setQuery($query); $db->query(); } } } //COPY fieldsattach_images GALLERIES----------------------------- $query = 'SELECT * FROM #__fieldsattach_images as a WHERE a.articleid = ' . $oldid; $db->setQuery($query); $results = $db->loadObjectList(); if (count($results) > 0) { foreach ($results as $result) { //JError::raiseWarning( 100, "QUERY1.2: ". $result->fieldsattachid ); if (isset($result->fieldsattachid)) { $query = 'SELECT * FROM #__fieldsattach_images as a WHERE a.articleid = ' . $newid . ' AND a.fieldsattachid=' . $result->fieldsattachid; $db->setQuery($query); $obj = $db->loadObject(); if ($obj) { //update $query = 'UPDATE #__fieldsattach_images SET image1="' . $result->title . '", image1="' . $result->image1 . '", image2="' . $result->image2 . '", image3="' . $result->image3 . '", description="' . $result->description . '", ordering="' . $result->ordering . '", published="' . $result->published . '" WHERE id=' . $result->id; $db->setQuery($query); $db->query(); } else { //insert $query = 'INSERT INTO #__fieldsattach_images(articleid,fieldsattachid,title, image1, image2, image3, description, ordering, published) VALUES (' . $newid . ',\'' . $result->fieldsattachid . '\',\'' . $result->title . '\',\'' . $result->image1 . '\',\'' . $result->image2 . '\',\'' . $result->image3 . '\',\'' . $result->description . '\',\'' . $result->ordering . '\',\'' . $result->published . '\' ) '; $db->setQuery($query); $db->query(); } } } } //copy documents and images $sitepath = JPATH_BASE; $sitepath = str_replace("administrator", "", $sitepath); $sitepath = JPATH_SITE; //COPY FOLDER ----------------------------- $path = '..' . DS . 'images' . DS . 'documents'; if (JRequest::getVar('option') == 'com_categories' && JRequest::getVar('layout') == "edit" && JRequest::getVar('extension') == "com_content") { $path = '..' . DS . 'images' . DS . 'documentscategories'; } $path = str_replace("../", DS, $path); $source = $sitepath . $path . DS . $oldid . DS; $dest = $sitepath . $path . DS . $newid . DS; //JFolder::copy($source, $dest); if (!JFolder::exists($dest)) { JFolder::create($dest); } $files = JFolder::files($source); foreach ($files as $file) { if (Jfile::copy($source . $file, $dest . $file)) { $app->enqueueMessage(JTEXT::_("Copy file ok:") . $file); } else { JError::raiseWarning(100, "Cannot copy the file: " . $source . $file . " to " . $dest . $file); } } } //$app->enqueueMessage( JText::_("EXTRA FIELDS ADDED"), 'info' ) ; //END COPY AND SAVE============================================================================ }
/** * Copy the article with extrafields * * @access public * @since 1.5 */ public function copyArticle($article, $oldid) { //JError::raiseWarning( 100, "Copy article ".$article->id . " old: ".$oldid ); $app = JFactory::getApplication(); //COPY AND SAVE LIKE COPY $newid = $article->id; if (!empty($oldid)) { $db = JFactory::getDBO(); //COPY __fieldsattach_values VALUES TABLE //$query = 'INSERT INTO #__fieldsattach_values (articleid, fieldsid, value) SELECT ' . $newid . ', fieldsid, value FROM #__fieldsattach_values WHERE articleid = '. $oldid; //$db->setQuery( $query ); //$db->query(); //Log //plgSystemfieldsattachment::writeLog("function copyArticle log1: ".$query); $query = 'INSERT into #__fieldsattach_images (articleid, fieldsattachid, title, image1, image2, image3, description, ordering, published)' . ' SELECT ' . $newid . ', fieldsattachid, title, image1, image2, image3, description, ordering, published FROM #__fieldsattach_images WHERE articleid = ' . $oldid; $db->setQuery($query); $db->query(); //copy documents and images $sitepath = JPATH_SITE; //COPY FOLDER IMG----------------------------- $path = '/images/documents'; if (JRequest::getVar('option') == 'com_categories' && JRequest::getVar('layout') == "edit" && JRequest::getVar('extension') == "com_content") { $path = '/images/documentscategories'; } $source = $sitepath . $path . '/' . $oldid . '/'; $dest = $sitepath . $path . '/' . $newid . '/'; // progress only if source dir exists if (JFolder::exists($source)) { if (!JFolder::exists($dest)) { JFolder::create($dest); } $files = JFolder::files($source); foreach ($files as $file) { if (Jfile::copy($source . $file, $dest . $file)) { $app->enqueueMessage(JTEXT::_("Copy file ok:") . $file); } else { JError::raiseWarning(100, "Cannot copy the file: " . $source . $file . " to " . $dest . $file); } } } } }
/** * Save alls fields of article * * @access public * @since 1.5 */ public function onContentAfterSave($context, &$article, $isNew) { $app = JFactory::getApplication(); $user =& JFactory::getUser(); $option = JRequest::getVar("option",""); $layout = JRequest::getVar('layout',""); $extension = JRequest::getVar('extension',""); $view= JRequest::getVar('view',""); $sitepath = JPATH_BASE ; $sitepath = str_replace ("administrator", "", $sitepath); $sitepath = JPATH_SITE; $fontend = false; if( $option=='com_content' && $user->get('id')>0 && $view == 'form' && $layout == 'edit' ) $fontend = true; if(JRequest::getVar("a_id")>0) $fontend = true; //CATEGORIES ============================================================== if (($option=='com_categories' && $layout=="edit" && $extension=="com_content" )) { $backendcategory = true; $backend=true; $this->onContentAfterSaveCategories($context, $article, $isNew); $this->createDirectory($article->id); } //Crear directorio ============================================================== if (($option=='com_content' && $view=="article" )||($fontend)) { $this->createDirectory($article->id); } //============================================================================ //COPY AND SAVE LIKE COPY if( (JRequest::getVar("id") != $article->id && (!empty( $article->id)) && ($article->id>0) && (JRequest::getVar("id")>0)) ){ $oldid = JRequest::getVar("id") ; $newid = $article->id; $db = & JFactory::getDBO(); //COPY __fieldsattach_values VALUES TABLE $query = 'SELECT * FROM #__fieldsattach_values as a WHERE a.articleid = '. $oldid ; $db->setQuery( $query ); $results= $db->loadObjectList(); if($results){ foreach ($results as $result) { $query = 'SELECT * FROM #__fieldsattach_values as a WHERE a.articleid = '. $newid.' AND a.fieldsid='.$result->fieldsid ; $db->setQuery( $query ); $obj= $db->loadObject(); if($obj) { //update $query = 'UPDATE #__fieldsattach_values SET value="'.$result->valor.'" WHERE id='.$result->id ; $db->setQuery($query); $db->query(); }else{ //insert $query = 'INSERT INTO #__fieldsattach_values(articleid,fieldsid,value) VALUES ('.$newid.',\''. $result->fieldsid .'\',\''.$result->value.'\' ) '; $db->setQuery($query); $db->query(); } } } //COPY fieldsattach_images GALLERIES----------------------------- $query = 'SELECT * FROM #__fieldsattach_images as a WHERE a.articleid = '. $oldid ; $db->setQuery( $query ); $results= $db->loadObjectList(); if($results){ foreach ($results as $result) { $query = 'SELECT * FROM #__fieldsattach_images as a WHERE a.articleid = '. $newid.' AND a.fieldsattachid='.$result->fieldsid ; $db->setQuery( $query ); $obj= $db->loadObject(); if($obj) { //update $query = 'UPDATE #__fieldsattach_images SET image1="'.$result->title.'", image1="'.$result->image1.'", image2="'.$result->image2.'", image3="'.$result->image3.'", description="'.$result->description.'", ordering="'.$result->ordering.'", published="'.$result->published.'" WHERE id='.$result->id ; $db->setQuery($query); $db->query(); }else{ //insert $query = 'INSERT INTO #__fieldsattach_images(articleid,fieldsattachid,title, image1, image2, image3, description, ordering, published) VALUES ('.$newid.',\''. $result->fieldsattachid .'\',\''.$result->title.'\',\''.$result->image1.'\',\''.$result->image2.'\',\''.$result->image3.'\',\''.$result->description.'\',\''.$result->ordering.'\',\''.$result->published.'\' ) '; $db->setQuery($query); $db->query(); } } } if(!$fontend){ //COPY FOLDER ----------------------------- $app = JFactory::getApplication(); $path = $this->path; $path = str_replace ("../", DS, $path); $source = $sitepath . $path .DS. $oldid.DS; $dest = $sitepath. $path .DS. $newid.DS; //JFolder::copy($source, $dest); if(!JFolder::exists($dest)) { JFolder::create($dest); } $files = JFolder::files($source); foreach ($files as $file) { if(Jfile::copy($source.$file, $dest.$file)) $app->enqueueMessage( JTEXT::_("Copy file ok:") . $file ) ; else JError::raiseWarning( 100, "Cannot copy the file: ". $source.$file." to ".$dest.$file ); } } } //END COPY AND SAVE============================================================================ //Ver categorias del artículo ============================================================== //$idscat = $this->recursivecat($article->catid); /*fieldsattachHelper::recursivecat($article->catid, & $idscat); $query = 'SELECT a.id, a.type, b.recursive, b.catid FROM #__fieldsattach as a INNER JOIN #__fieldsattach_groups as b ON a.groupid = b.id WHERE b.catid IN ('. $idscat .') AND a.published=1 AND b.published = 1 ORDER BY a.ordering, a.title'; $db->setQuery( $query ); $nameslst = $db->loadObjectList(); //*********************************************************************************************** //Mirar cual de los grupos es RECURSIVO **************** **************** **************** //*********************************************************************************************** $cont = 0; foreach ($nameslst as $field) { //JError::raiseWarning( 100, $field->catid ." !=".$article->catid ); if( $field->catid != $article->catid ) { //Mirar si recursivamente si if(!$field->recursive) { //echo "ELIMINO DE LA LISTA " ; unset($nameslst[$cont]); } } $cont++; } */ if (($option=='com_content' && $layout=="edit" ) || $fontend) { $db = & JFactory::getDBO(); $nameslst = fieldsattachHelper::getfields($article->id); // JError::raiseWarning( 100, "NUMEROOO: ". count($nameslst) ." - ".$article->catid ); //*********************************************************************************************** //create array of fields **************** **************** **************** //*********************************************************************************************** $fields_tmp0 = fieldsattachHelper::getfieldsForAll($article->id); $nameslst = array_merge($fields_tmp0, $nameslst ); $fields_tmp2 = fieldsattachHelper::getfieldsForArticlesid($article->id, $nameslst); $nameslst = array_merge( $nameslst, $fields_tmp2 ); //Si existen fields relacionados se mira uno a uno si tiene valores //JError::raiseWarning( 100, count($nameslst) ); if(count($nameslst)>0){ foreach($nameslst as $obj) { $query = 'SELECT a.id, b.required ,b.title, b.extras FROM #__fieldsattach_values as a INNER JOIN #__fieldsattach as b ON a.fieldsid = b.id WHERE a.articleid='.$article->id .' AND a.fieldsid ='. $obj->id ; //echo $query; $db->setQuery($query); $valueslst = $db->loadObject(); if(count($valueslst)==0) { //INSERT // $valor = JRequest::getVar("field_". $obj->id, '', 'post', null, JREQUEST_ALLOWHTML); $valor = $_POST["field_". $obj->id]; if(is_array($valor)) { $valortxt=""; for($i = 0; $i < count($valor); $i++ ) { $valortxt .= $valor[$i].", "; } $valor = $valortxt; } //remove vbad characters $valor = preg_replace('/[^(\x20-\x7F)]*/','', $valor); //INSERT $query = 'INSERT INTO #__fieldsattach_values(articleid,fieldsid,value) VALUES ('.$article->id.',\''. $obj->id .'\',\''.$valor.'\' ) '; $db->setQuery($query); $db->query(); //Select last id ---------------------------------- $query = 'SELECT id FROM #__fieldsattach_values AS a WHERE a.articleid='.$article->id.' AND a.fieldsid='.$obj->id; //echo $query; $db->setQuery( $query ); $result = $db->loadObject(); $valueslst->id = $result->id; } else{ //UPDATE //$valor = JRequest::getVar("field_". $obj->id, '', 'post', null, JREQUEST_ALLOWHTML); $valor = $_POST["field_". $obj->id]; if(is_array($valor)) { $valortxt=""; for($i = 0; $i < count($valor); $i++ ) { $valortxt .= $valor[$i].", "; } $valor = $valortxt; } //remove vbad characters //$valor = preg_replace('/[^(\x20-\x7F)]*/','', $valor); //$valor = str_replace('"','"', $valor ); //$valor = htmlspecialchars($valor); //Remove BAD characters **** $valor = preg_replace('/border="*"*/','', $valor); $valor = htmlspecialchars($valor); $query = 'UPDATE #__fieldsattach_values SET value="'.$valor.'" WHERE id='.$valueslst->id .' AND articleid='.$article->id ; $db->setQuery($query); //JError::raiseWarning( 100, $query ); $db->query(); } //Acción PLUGIN ======================================================== JPluginHelper::importPlugin('fieldsattachment'); // very important $query = 'SELECT * FROM #__extensions as a WHERE a.element="'.$obj->type.'" AND a.enabled= 1'; // JError::raiseWarning( 100, $obj->type." --- ". $query ); $db->setQuery( $query ); $results = $db->loadObject(); if(!empty($results)){ $function = "plgfieldsattachment_".$obj->type."::action( ".$article->id.",".$obj->id.",".$valueslst->id.");"; // JError::raiseWarning( 100, $function ); eval($function); } } } } return true; }
/** * * * @param string $source * @param string $destination * @return bool */ public static function copy($source, $destination) { $destination = Sobi::FixPath(str_replace('\\', '/', $destination)); $path = explode('/', str_replace(array(SOBI_ROOT, str_replace('\\', '/', SOBI_ROOT)), null, $destination)); $part = SOBI_ROOT; $i = count($path); // yeah I know ... shame on me :( while (!@$path[$i]) { unset($path[$i--]); } array_pop($path); if (!is_string($path) && count($path)) { foreach ($path as $dir) { $part .= "/{$dir}"; if ($dir && !file_exists($part)) { self::mkdir($part); } } } if (!is_dir($source)) { return Jfile::copy(self::clean($source), self::clean($destination)); } else { return Jfolder::copy(self::clean($source), self::clean($destination)); } }