Example #1
0
    function addToSearchableObjects($wasNew = false){
    	$columns_to_drop = array();
    	if ($wasNew)
    		$columns_to_drop = $this->getSearchableColumns();
    	else {
			foreach ($this->getSearchableColumns() as $column_name){
				if (isset($this->searchable_composite_columns[$column_name])){
					foreach ($this->searchable_composite_columns[$column_name] as $colName){
						if ($this->isColumnModified($colName)){
							$columns_to_drop[] = $column_name;
							break;
						}
					}
				} else if ($column_name == 'body') {
					$columns_to_drop[] = $column_name;
				} else if ($this->getMailData()->columnExists($column_name) && $this->getMailData()->isColumnModified($column_name)) {
					$columns_to_drop[] = $column_name;
				} else if ($this->isColumnModified($column_name)) {
					$columns_to_drop[] = $column_name;
				}
			}
    	}
    	
    	if (count($columns_to_drop) > 0){
    		SearchableObjects::dropContentByObjectColumns($this,$columns_to_drop);
    		
	        foreach($columns_to_drop as $column_name) {
	          $content = $this->getSearchableColumnContent($column_name);
	          if(trim($content) <> '') {

	            $searchable_object = new SearchableObject();
	            
	            $searchable_object->setRelObjectId($this->getObjectId());
	            $searchable_object->setColumnName($column_name);
	            $searchable_object->setContent($content);
	            $searchable_object->setContactId($this->getAccount() instanceof MailAccount ? $this->getAccount()->getContactId() : 0);
	            //$searchable_object->setProjectId(0); TODO Feng 2 setDefault Member
	            $searchable_object->save();
	          } // if
	        } // foreach
    	} // if
    	
    	if ($wasNew){
        	SearchableObjects::dropContentByObjectColumns($this,array('uid'));
        	$searchable_object = new SearchableObject();
            
            $searchable_object->setRelObjectId($this->getObjectId());
            $searchable_object->setColumnName('uid');
            $searchable_object->setContent($this->getUniqueObjectId());

            
            $searchable_object->save();
        }
    }
 function addToSearchableObjects($wasNew = false)
 {
     $columns_to_drop = array();
     if ($wasNew) {
         $columns_to_drop = $this->getSearchableColumns();
     } else {
         foreach ($this->getSearchableColumns() as $column_name) {
             if (isset($this->searchable_composite_columns[$column_name])) {
                 foreach ($this->searchable_composite_columns[$column_name] as $colName) {
                     if ($this->isColumnModified($colName)) {
                         $columns_to_drop[] = $column_name;
                         break;
                     }
                 }
             } else {
                 if ($this->isColumnModified($column_name)) {
                     $columns_to_drop[] = $column_name;
                 }
             }
         }
     }
     if (count($columns_to_drop) > 0) {
         if (!$wasNew) {
             SearchableObjects::dropContentByObjectColumns($this, $columns_to_drop);
         }
         foreach ($columns_to_drop as $column_name) {
             $content = $this->getSearchableColumnContent($column_name);
             if (get_class($this->manager()) == 'ProjectFiles') {
                 $content = utf8_encode($content);
             }
             if (trim($content) != '') {
                 $searchable_object = new SearchableObject();
                 $searchable_object->setRelObjectManager(get_class($this->manager()));
                 $searchable_object->setRelObjectId($this->getObjectId());
                 $searchable_object->setColumnName($column_name);
                 $searchable_object->setContent($content);
                 $searchable_object->setProjectId(0);
                 $searchable_object->setIsPrivate(false);
                 $searchable_object->save();
             }
             // if
         }
         // foreach
     }
     // if
     //Add Unique ID to search
     if ($wasNew) {
         SearchableObjects::dropContentByObjectColumns($this, array('uid'));
         // Fixes Query failed with message 'Duplicate entry 'xxxxx-31-uid' for key 1'
         $searchable_object = new SearchableObject();
         $searchable_object->setRelObjectManager(get_class($this->manager()));
         $searchable_object->setRelObjectId($this->getObjectId());
         $searchable_object->setColumnName('uid');
         $searchable_object->setContent($this->getUniqueObjectId());
         $searchable_object->setProjectId(0);
         $searchable_object->setIsPrivate(false);
         $searchable_object->save();
     }
 }
 function addToSearchableObjects($wasNew)
 {
     $columns_to_drop = array();
     if ($wasNew || $this->columnExists('project_id') && $this->isColumnModified('project_id')) {
         $columns_to_drop = $this->getSearchableColumns();
     } else {
         foreach ($this->getSearchableColumns() as $column_name) {
             if (isset($this->searchable_composite_columns[$column_name])) {
                 foreach ($this->searchable_composite_columns[$column_name] as $colName) {
                     if ($this->isColumnModified($colName)) {
                         $columns_to_drop[] = $column_name;
                         break;
                     }
                 }
             } else {
                 if ($this->isColumnModified($column_name)) {
                     $columns_to_drop[] = $column_name;
                 }
             }
         }
     }
     if (count($columns_to_drop) > 0) {
         SearchableObjects::dropContentByObjectColumns($this, $columns_to_drop);
         foreach ($columns_to_drop as $column_name) {
             $content = $this->getSearchableColumnContent($column_name);
             if (trim($content) != '') {
                 $searchable_object = new SearchableObject();
                 $searchable_object->setRelObjectManager(get_class($this->manager()));
                 $searchable_object->setRelObjectId($this->getObjectId());
                 $searchable_object->setColumnName($column_name);
                 $searchable_object->setContent($content);
                 $searchable_object->setIsPrivate(false);
                 $searchable_object->save();
             }
             // if
         }
         // foreach
     }
     // if
     //Add Unique ID to search
     if ($wasNew || $this->columnExists('project_id') && $this->isColumnModified('project_id')) {
         SearchableObjects::dropContentByObjectColumns($this, array('uid'));
         $searchable_object = new SearchableObject();
         $searchable_object->setRelObjectManager(get_class($this->manager()));
         $searchable_object->setRelObjectId($this->getObjectId());
         $searchable_object->setColumnName('uid');
         $searchable_object->setContent($this->getUniqueObjectId());
         $searchable_object->setIsPrivate(false);
         $searchable_object->save();
     }
 }
 function addToSearchableObjects($wasNew = false)
 {
     $columns_to_drop = array();
     if ($wasNew) {
         $columns_to_drop = $this->getSearchableColumns();
     } else {
         $searchable_columns = $this->getSearchableColumns();
         if (is_array($searchable_columns)) {
             foreach ($searchable_columns as $column_name) {
                 if (isset($this->searchable_composite_columns[$column_name])) {
                     foreach ($this->searchable_composite_columns[$column_name] as $colName) {
                         if ($this->isColumnModified($colName)) {
                             $columns_to_drop[] = $column_name;
                             break;
                         }
                     }
                 } else {
                     if ($this->isColumnModified($column_name)) {
                         $columns_to_drop[] = $column_name;
                     }
                 }
             }
         }
         $searchable_columns = null;
     }
     if (count($columns_to_drop) > 0) {
         if (!$wasNew) {
             SearchableObjects::dropContentByObjectColumns($this, $columns_to_drop);
         }
         $docx_id = FileTypes::findOne(array('id' => true, 'conditions' => '`extension` = ' . DB::escape('docx')));
         $pdf_id = FileTypes::findOne(array('id' => true, 'conditions' => '`extension` = ' . DB::escape('pdf')));
         $odt_id = FileTypes::findOne(array('id' => true, 'conditions' => '`extension` = ' . DB::escape('odt')));
         $fodt_id = FileTypes::findOne(array('id' => true, 'conditions' => '`extension` = ' . DB::escape('fodt')));
         foreach ($columns_to_drop as $column_name) {
             $content = $this->getSearchableColumnContent($column_name);
             if (get_class($this->manager()) == 'ProjectFiles') {
                 $content = utf8_encode($content);
             } elseif (get_class($this->manager()) == 'ProjectFileRevisions') {
                 if ($column_name == "filecontent") {
                     $file = ProjectFileRevisions::findById($this->getObjectId());
                     try {
                         if ($file->getFileTypeId() == $docx_id) {
                             if (class_exists('DOMDocument')) {
                                 $file_path = "tmp/doc_filecontent_" . $this->getObjectId() . ".docx";
                                 $file_tmp = @fopen($file_path, 'w');
                                 if ($file_tmp) {
                                     fwrite($file_tmp, $file->getFileContent());
                                     fclose($file_tmp);
                                     $content = docx2text($file_path);
                                     unlink($file_path);
                                 }
                             }
                         } elseif ($file->getFileTypeId() == $pdf_id) {
                             $file_path = "tmp/pdf_filecontent_" . $this->getObjectId() . ".pdf";
                             $file_tmp = @fopen($file_path, 'w');
                             if ($file_tmp) {
                                 fwrite($file_tmp, $file->getFileContent());
                                 fclose($file_tmp);
                                 $content = pdf2text($file_path);
                                 unlink($file_path);
                             }
                         } elseif ($file->getFileTypeId() == $odt_id) {
                             if (class_exists('DOMDocument')) {
                                 $file_path = "tmp/odt_filecontent_" . $this->getObjectId() . ".odt";
                                 $file_tmp = @fopen($file_path, 'w');
                                 if ($file_tmp) {
                                     fwrite($file_tmp, $file->getFileContent());
                                     fclose($file_tmp);
                                     $content = odt2text($file_path);
                                     unlink($file_path);
                                 }
                             }
                         } elseif ($file->getFileTypeId() == $fodt_id) {
                             $file_path = "tmp/fodt_filecontent_" . $this->getObjectId() . ".fodt";
                             $file_tmp = @fopen($file_path, 'w');
                             if ($file_tmp) {
                                 fwrite($file_tmp, $file->getFileContent());
                                 fclose($file_tmp);
                                 $content = fodt2text($file_path, $this->getObjectId());
                                 unlink($file_path);
                             }
                         }
                     } catch (FileNotInRepositoryError $e) {
                         $content = "";
                     }
                 } else {
                     $content = utf8_encode($content);
                 }
             }
             if (trim($content) != '') {
                 $searchable_object = new SearchableObject();
                 $searchable_object->setRelObjectId($this->getObjectId());
                 $searchable_object->setColumnName(DB::escape($column_name));
                 if (strlen($content) > 65535) {
                     $content = utf8_safe(substr($content, 0, 65535));
                 }
                 $content = DB::escape($content);
                 $sql = "\n\t\t\t\t\t\tINSERT INTO " . TABLE_PREFIX . "searchable_objects (rel_object_id, column_name, content)\n\t\t\t\t\t\tVALUES (" . $searchable_object->getRelObjectId() . "," . $searchable_object->getColumnName() . "," . $content . ")\n\t\t\t\t\t\tON DUPLICATE KEY UPDATE content = {$content}";
                 DB::execute($sql);
                 $searchable_object = null;
             }
             $content = null;
         }
     }
     $columns_to_drop = null;
 }
 function addToSearchableObjects($wasNew = false)
 {
     $columns_to_drop = array();
     if ($wasNew) {
         $columns_to_drop = $this->getSearchableColumns();
     } else {
         foreach ($this->getSearchableColumns() as $column_name) {
             if (isset($this->searchable_composite_columns[$column_name])) {
                 foreach ($this->searchable_composite_columns[$column_name] as $colName) {
                     if ($this->isColumnModified($colName)) {
                         $columns_to_drop[] = $column_name;
                         break;
                     }
                 }
             } else {
                 if ($column_name == 'body') {
                     $columns_to_drop[] = $column_name;
                 } else {
                     if ($this->getMailData()->columnExists($column_name) && $this->getMailData()->isColumnModified($column_name)) {
                         $columns_to_drop[] = $column_name;
                     } else {
                         if ($this->isColumnModified($column_name)) {
                             $columns_to_drop[] = $column_name;
                         }
                     }
                 }
             }
         }
     }
     if (count($columns_to_drop) > 0) {
         SearchableObjects::dropContentByObjectColumns($this, $columns_to_drop);
         foreach ($columns_to_drop as $column_name) {
             $content = $this->getSearchableColumnContent($column_name);
             if (trim($content) != '') {
                 $searchable_object = SearchableObjects::findById(array('rel_object_id' => $this->getObjectId(), 'column_name' => $column_name));
                 if (!$searchable_object instanceof SearchableObject) {
                     $searchable_object = new SearchableObject();
                     $searchable_object->setRelObjectId($this->getObjectId());
                     $searchable_object->setColumnName($column_name);
                 }
                 $searchable_object->setContent($content);
                 $searchable_object->setContactId($this->getAccount() instanceof MailAccount ? $this->getAccount()->getContactId() : 0);
                 $searchable_object->save();
             }
             // if
         }
         // foreach
     }
     // if
     $rows = DB::executeAll("select column_name from " . TABLE_PREFIX . "searchable_objects where rel_object_id=" . $this->getObjectId());
     if ($wasNew) {
         SearchableObjects::dropContentByObjectColumn($this, 'uid');
         $searchable_object = new SearchableObject();
         $searchable_object->setRelObjectId($this->getObjectId());
         $searchable_object->setColumnName('uid');
         $searchable_object->setContent($this->getUniqueObjectId());
         $searchable_object->setContactId($this->getAccount() instanceof MailAccount ? $this->getAccount()->getContactId() : 0);
         $searchable_object->save();
     }
     $rows = DB::executeAll("select column_name from " . TABLE_PREFIX . "searchable_objects where rel_object_id=" . $this->getObjectId());
 }