Esempio n. 1
0
 private static function merge($base, $user, $server)
 {
     include_once "merge_merge.php";
     $threewaymerge = new ThreeWayMerge($base, $user, $server);
     $result = $threewaymerge->merge();
     if (strpos($result, "be:conflict") !== false) {
         return NULL;
     }
     return $result;
 }
Esempio n. 2
0
function MergeFile($original, $edited, $cache)
{
    /*echo "<table><tr><td VALIGN='top' width='33%'>" . htmlspecialchars($original) . "</td><td VALIGN='top' width='33%'>" . 
       htmlspecialchars($edited) . " </td><td VALIGN='top' width='33%'>" . htmlspecialchars($cache) . "</td></tr></table>";
      echo "<br><br>-----------------------------------------------------------------------------";*/
    /* Run the merge */
    require_once 'classMerge.php';
    $merge = new ThreeWayMerge($original, $edited, $cache, 'full');
    $result = $merge->merge();
    if ($result !== FALSE) {
        /* Check for conflicts */
        //$conflicts = ( stristr( $result, '<ips:conflict' ) ) ? 1 : 0;
        echo htmlspecialchars($result);
        $myfile = fopen("doclineSQL1.txt", "w+") or die("Unable to open file!");
        fwrite($myfile, $result);
        fclose($myfile);
    } else {
        echo "Fail to merge";
    }
}
 /**
  * Process merge
  *
  * @return	@e void
  */
 protected function _merge()
 {
     /* INIT */
     $pergo = intval($this->request['perGo']) ? intval($this->request['perGo']) : 10;
     $diffSessionID = intval($this->request['sessionID']);
     $completed = 0;
     $type = 'template';
     $items = array();
     $completed = 0;
     /* Fetch current session */
     $session = $this->skinFunctions->fetchSession($diffSessionID);
     if ($session === FALSE) {
         $this->returnJsonError($this->lang->words['ajax_invalidsession']);
     }
     /* Load merge class */
     require_once IPS_KERNEL_PATH . 'classMerge.php';
     /*noLibHook*/
     /* Are we doing templates or CSS? */
     if ($session['merge_m_templates_togo']) {
         $this->DB->build(array('select' => 'c.*', 'from' => array('skin_merge_changes' => 'c'), 'where' => 'change_session_id=' . intval($diffSessionID) . ' AND change_data_type=\'template\' AND change_is_diff=1 AND change_is_new=0', 'order' => 'change_id ASC', 'limit' => array(intval($session['merge_m_templates_done']), intval($pergo)), 'add_join' => array(array('select' => 's.*', 'from' => array('skin_templates' => 's'), 'where' => 's.template_set_id=0 AND s.template_master_key=\'' . $session['merge_master_key'] . '\' AND s.template_group=c.change_data_group AND s.template_name=c.change_data_title', 'type' => 'left'))));
         $this->DB->execute();
         $type = 'template';
         while ($row = $this->DB->fetch()) {
             $items[] = array('data_group' => $row['template_group'], 'data_title' => $row['template_name'], 'data_content' => $row['template_content'], 'data_master_key' => $session['merge_master_key'], 'data_set_id' => $session['merge_set_id'], 'data_type' => 'template');
         }
     }
     /* If we're here, set to templates but no templates, check CSS */
     if (!count($items) and $type == 'template') {
         $type = 'css';
         $pergo = 1;
         $this->DB->build(array('select' => 'c.*', 'from' => array('skin_merge_changes' => 'c'), 'where' => 'change_session_id=' . intval($diffSessionID) . ' AND change_data_type=\'css\' AND change_is_diff=1 AND change_is_new=0', 'order' => 'change_id ASC', 'limit' => array(intval($session['merge_m_css_done']), intval($pergo)), 'add_join' => array(array('select' => 's.*', 'from' => array('skin_css' => 's'), 'where' => 's.css_set_id=0 AND s.css_master_key=\'' . $session['merge_master_key'] . '\' AND s.css_app=c.change_data_group AND s.css_group=c.change_data_title', 'type' => 'left'))));
         $this->DB->execute();
         while ($row = $this->DB->fetch()) {
             $items[] = array('data_group' => $row['css_app'], 'data_title' => $row['css_group'], 'data_content' => $row['css_content'], 'data_master_key' => $session['merge_master_key'], 'data_set_id' => $session['merge_set_id'], 'data_type' => 'css');
         }
     }
     /* If we don't have items, we're probably done */
     if (!count($items)) {
         /* Flag as completed */
         $completed = 1;
     } else {
         foreach ($items as $item) {
             /* Fetch templates to compare */
             $new = $item['data_content'];
             $original = $this->skinFunctions->fetchOriginalItem($item);
             $custom = $this->skinFunctions->fetchCustomItem($item);
             /* Other data */
             $key = $diffSessionID . ':' . $item['data_group'] . ':' . $item['data_title'];
             /* Got all the required data? */
             if ($new and $original and $custom) {
                 /* Run the merge */
                 $merge = new ThreeWayMerge($original, $new, $custom, $type == 'template' ? 'lite' : 'full');
                 $result = $merge->merge();
                 if ($result !== FALSE) {
                     /* Check for conflicts */
                     $conflicts = stristr($result, '<ips:conflict') ? 1 : 0;
                     $this->DB->update('skin_merge_changes', array('change_updated' => time(), 'change_merge_content' => $result, 'change_is_conflict' => $conflicts, 'change_can_merge' => 1), 'change_key=\'' . $key . '\'');
                 }
             }
             /* Increment */
             if ($type == 'template') {
                 $session['merge_m_templates_done']++;
             } else {
                 $session['merge_m_css_done']++;
             }
         }
     }
     /* Update current session */
     $this->DB->update('skin_merge_session', array('merge_m_templates_done' => intval($session['merge_m_templates_done']), 'merge_m_css_done' => intval($session['merge_m_css_done'])), 'merge_id=' . $diffSessionID);
     $done = intval($session['merge_m_templates_done']) + intval($session['merge_m_css_done']);
     $total = $session['merge_m_templates_togo'] + $session['merge_m_css_togo'];
     /* Messages */
     if ($type == 'template') {
         $title = $this->lang->words['ajax_tbmlll'];
         $message = sprintf($this->lang->words['ajax_tbdprocess'], $session['merge_m_templates_done'], $session['merge_m_templates_togo']);
     } else {
         $title = $this->lang->words['ajax_cssmlll'];
         $message = sprintf($this->lang->words['ajax_cssdprocess'], $session['merge_m_css_done'], $session['merge_m_css_togo']);
     }
     /* Give Jason back (L or H?) */
     $this->returnJsonArray(array('processed' => $done, 'completed' => $completed, 'title' => $title, 'message' => $message, 'perGo' => $pergo, 'totalBits' => $total));
 }