CloneSet19


Previous CloneSetNext CloneSetBack to Main Report
Clone
Mass
Clones in
CloneSet
Parameter
Count
Clone
Similarity
Syntax Category
[Sequence Length]
137201.000class_member
Clone AbstractionParameter Bindings
Clone Instance
(Click to see clone)
Line CountSource Line
Source File
1137643
administrator/components/com_content/models/article.php
2137710
administrator/components/com_menus/models/item.php
Clone Instance
1
Line Count
137
Source Line
643
Source File
administrator/components/com_content/models/article.php

        /**
         * Batch copy menu items to a new menu or parent.
         *
         * @param       int             The new menu or sub-item.
         * @param       array   An array of row IDs.
         *
         * @return      booelan True if successful, false otherwise and internal error is set.
         */
        protected

                  function _batchCopy($value, $pks) {

                // $value comes as {menutype}.{parent_id}
                $parts=           explode('.', $value);
                $menuType=        $parts[0];
                $parentId=        (int) JArrayHelper::getValue($parts, 1, 0);

                $table=   &$this->getTable();
                $db=              &$this->getDbo();

                // Check that the parent exists
                if ($parentId)
                {
                        if (!$table->load($parentId))
                        {
                                if ($error=  $table->getError())
                                {
                                        // Fatal error
                                        $this->setError($error);
                                        return FALSE;
                                      }
                                else
                                {
                                        // Non-fatal error
                                        $this->setError(JText::_('Menus_Batch_Move_parent_not_found'));
                                        $parentId=  0;
                                      }
                              }
                      }

                // If the parent is 0, set it to the ID of the root item in the tree
                if (empty($parentId))
                {
                        if (!$parentId=  $table->getRootId()) {
                                $this->setError($this->_db->getErrorMsg());
                                return FALSE;
                              }
                      }

                // We need to log the parent ID
                $parents=  array();

                // Calculate the emergency stop count as a precaution against a runaway loop bug
                $db->setQuery(
                        'SELECT COUNT(id)'
                        . ' FROM #__menu');

                $count=  $db->loadResult();

                if ($error=  $db->getErrorMsg())
                {
                        $this->setError($error);
                        return FALSE;
                      }

                // Parent exists so we let's proceed
                while (!empty($pks)
                       &&              $count>  0) {
                        // Pop the first id off the stack
                        $pk=  array_shift($pks);

                        $table->reset();

                        // Check that the row actually exists
                        if (!$table->load($pk))
                        {
                                if ($error=  $table->getError())
                                {
                                        // Fatal error
                                        $this->setError($error);
                                        return FALSE;
                                      }
                                else
                                {
                                        // Not fatal error
                                        $this->setError(JText::sprintf('Menus_Batch_Move_row_not_found', $pk));
                                        continue;
                                      }
                              }

                        // Copy is a bit tricky, because we also need to copy the children
                        $db->setQuery(
                                'SELECT id'
                                . ' FROM #__menu'
                                . ' WHERE lft > '
                                .               (int) $table->lft
                                .                                 ' AND rgt < '
                                .                                               (int) $table->rgt);
                        $childIds=  $db->loadResultArray();
                        // Add child ID's to the array only if they aren't already there.
                        foreach ($childIds as $childId)
                        {
                                if (!in_array($childId, $pks)) {
                                        array_push($pks, $childId);
                                      }
                              }
                        // Make a copy of the old ID and Parent ID
                        $oldId=                           $table->id;
                        $oldParentId=             $table->parent_id;

                        // Reset the id because we are making a copy.
                        $table->id =                      0;

                        // If we a copying children, the Old ID will turn up in the parents list
                        // otherwise it's a new top level item
                        $table->parent_id =       isset ($parents[$oldParentId])
                                                  ?                               $parents[$oldParentId]
                                                  :                                                        $parentId;
                        $table->menutype =        $menuType;
                        // TODO: Deal with ordering?
                        //$table->ordering      = 1;
                        $table->level =           NULL;
                        $table->lft =             NULL;
                        $table->rgt =     NULL;
                        // Store the row.
                        if (!$table->store()) {
                                $this->setError($table->getError());
                                return FALSE;
                              }
                        // Now we log the old 'parent' to the new 'parent'
                        $parents[$oldId]=  $table->id;
                        $count --;
                      }

                // Rebuild the hierarchy.
                if (!$table->rebuildTree()) {
                        $this->setError($table->getError());
                        return FALSE;
                      }

                // Rebuild the tree path.
                if (!$table->rebuildPath($table->id)) {
                        $this->setError($table->getError());
                        return FALSE;
                      }

                return TRUE;
              }


Clone Instance
2
Line Count
137
Source Line
710
Source File
administrator/components/com_menus/models/item.php

        /**
         * Batch copy menu items to a new menu or parent.
         *
         * @param       int             The new menu or sub-item.
         * @param       array   An array of row IDs.
         *
         * @return      booelan True if successful, false otherwise and internal error is set.
         */
        protected

                  function _batchCopy($value, $pks) {

                // $value comes as {menutype}.{parent_id}
                $parts=           explode('.', $value);
                $menuType=        $parts[0];
                $parentId=        (int) JArrayHelper::getValue($parts, 1, 0);

                $table=   &$this->getTable();
                $db=              &$this->getDbo();

                // Check that the parent exists
                if ($parentId)
                {
                        if (!$table->load($parentId))
                        {
                                if ($error=  $table->getError())
                                {
                                        // Fatal error
                                        $this->setError($error);
                                        return FALSE;
                                      }
                                else
                                {
                                        // Non-fatal error
                                        $this->setError(JText::_('Menus_Batch_Move_parent_not_found'));
                                        $parentId=  0;
                                      }
                              }
                      }

                // If the parent is 0, set it to the ID of the root item in the tree
                if (empty($parentId))
                {
                        if (!$parentId=  $table->getRootId()) {
                                $this->setError($this->_db->getErrorMsg());
                                return FALSE;
                              }
                      }

                // We need to log the parent ID
                $parents=  array();

                // Calculate the emergency stop count as a precaution against a runaway loop bug
                $db->setQuery(
                        'SELECT COUNT(id)'
                        . ' FROM #__menu');

                $count=  $db->loadResult();

                if ($error=  $db->getErrorMsg())
                {
                        $this->setError($error);
                        return FALSE;
                      }

                // Parent exists so we let's proceed
                while (!empty($pks)
                       &&              $count>  0) {
                        // Pop the first id off the stack
                        $pk=  array_shift($pks);

                        $table->reset();

                        // Check that the row actually exists
                        if (!$table->load($pk))
                        {
                                if ($error=  $table->getError())
                                {
                                        // Fatal error
                                        $this->setError($error);
                                        return FALSE;
                                      }
                                else
                                {
                                        // Not fatal error
                                        $this->setError(JText::sprintf('Menus_Batch_Move_row_not_found', $pk));
                                        continue;
                                      }
                              }

                        // Copy is a bit tricky, because we also need to copy the children
                        $db->setQuery(
                                'SELECT id'
                                . ' FROM #__menu'
                                . ' WHERE lft > '
                                .               (int) $table->lft
                                .                                 ' AND rgt < '
                                .                                               (int) $table->rgt);
                        $childIds=  $db->loadResultArray();
                        // Add child ID's to the array only if they aren't already there.
                        foreach ($childIds as $childId)
                        {
                                if (!in_array($childId, $pks)) {
                                        array_push($pks, $childId);
                                      }
                              }
                        // Make a copy of the old ID and Parent ID
                        $oldId=                           $table->id;
                        $oldParentId=             $table->parent_id;

                        // Reset the id because we are making a copy.
                        $table->id =                      0;

                        // If we a copying children, the Old ID will turn up in the parents list
                        // otherwise it's a new top level item
                        $table->parent_id =       isset ($parents[$oldParentId])
                                                  ?                               $parents[$oldParentId]
                                                  :                                                        $parentId;
                        $table->menutype =        $menuType;
                        // TODO: Deal with ordering?
                        //$table->ordering      = 1;
                        $table->level =           NULL;
                        $table->lft =             NULL;
                        $table->rgt =     NULL;
                        // Store the row.
                        if (!$table->store()) {
                                $this->setError($table->getError());
                                return FALSE;
                              }
                        // Now we log the old 'parent' to the new 'parent'
                        $parents[$oldId]=  $table->id;
                        $count --;
                      }

                // Rebuild the hierarchy.
                if (!$table->rebuildTree()) {
                        $this->setError($table->getError());
                        return FALSE;
                      }

                // Rebuild the tree path.
                if (!$table->rebuildPath($table->id)) {
                        $this->setError($table->getError());
                        return FALSE;
                      }

                return TRUE;
              }


Clone AbstractionParameter Count: 0Parameter Bindings

/**
         * Batch copy menu items to a new menu or parent.
         *
         * @param       int             The new menu or sub-item.
         * @param       array   An array of row IDs.
         *
         * @return      booelan True if successful, false otherwise and internal error is set.
         */
protected

         function _batchCopy($value,$pks) {
           // $value comes as {menutype}.{parent_id}
           $parts=explode('.',$value);
           $menuType=$parts[0];
           $parentId= (int) JArrayHelper::getValue($parts,1,0);
           $table= &$this->getTable();
           $db= &$this->getDbo();
           // Check that the parent exists
           if ($parentId) {
             if (!$table->load($parentId)) {
               if ($error=$table->getError()) {
                 // Fatal error
                 $this->setError($error);
                 return FALSE;
               }
               else {
                 // Non-fatal error
                 $this->setError(JText::_('Menus_Batch_Move_parent_not_found'));
                 $parentId=0;
               }
             }
           }
           // If the parent is 0, set it to the ID of the root item in the tree
           if (empty($parentId)) {
             if (!$parentId=$table->getRootId()) {
               $this->setError($this->_db->getErrorMsg());
               return FALSE;
             }
           }
           // We need to log the parent ID
           $parents=array();
           // Calculate the emergency stop count as a precaution against a runaway loop bug
           $db->setQuery('SELECT COUNT(id)'
                         . ' FROM #__menu');
           $count=$db->loadResult();
           if ($error=$db->getErrorMsg()) {
             $this->setError($error);
             return FALSE;
           }
           // Parent exists so we let's proceed
           while (!empty($pks)
                  && $count>0) {
             // Pop the first id off the stack
             $pk=array_shift($pks);
             $table->reset();
             // Check that the row actually exists
             if (!$table->load($pk)) {
               if ($error=$table->getError()) {
                 // Fatal error
                 $this->setError($error);
                 return FALSE;
               }
               else {
                 // Not fatal error
                 $this->setError(JText::sprintf('Menus_Batch_Move_row_not_found',$pk));
                 continue;
               }
             }
             // Copy is a bit tricky, because we also need to copy the children
             $db->setQuery('SELECT id'
                           . ' FROM #__menu'
                           . ' WHERE lft > '
                           . (int) $table->lft
                           . ' AND rgt < '
                           . (int) $table->rgt);
             $childIds=$db->loadResultArray();
             // Add child ID's to the array only if they aren't already there.
             foreach ($childIds as $childId) {
               if (!in_array($childId,$pks)) {
                 array_push($pks,$childId);
               }
             }
             // Make a copy of the old ID and Parent ID
             $oldId=$table->id;
             $oldParentId=$table->parent_id;
             // Reset the id because we are making a copy.
             $table->id =0;
             // If we a copying children, the Old ID will turn up in the parents list
             // otherwise it's a new top level item
             $table->parent_id = isset ($parents[$oldParentId])
                                 ? $parents[$oldParentId]
                                 : $parentId;
             $table->menutype =$menuType;
             // TODO: Deal with ordering?
             //$table->ordering      = 1;
             $table->level =NULL;
             $table->lft =NULL;
             $table->rgt =NULL;
             // Store the row.
             if (!$table->store()) {
               $this->setError($table->getError());
               return FALSE;
             }
             // Now we log the old 'parent' to the new 'parent'
             $parents[$oldId]=$table->id;
             $count --;
           }
           // Rebuild the hierarchy.
           if (!$table->rebuildTree()) {
             $this->setError($table->getError());
             return FALSE;
           }
           // Rebuild the tree path.
           if (!$table->rebuildPath($table->id)) {
             $this->setError($table->getError());
             return FALSE;
           }
           return TRUE;
         }
 

CloneAbstraction
Parameter Bindings
Parameter
Index
Clone
Instance
Parameter
Name
Value
None