рдЬрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдВрдд рдХреЗ рдирд┐рдХрдЯ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рджрд░реНрдЬрдиреЛрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рд╢реНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛, рдЬрд╣рд╛рдВ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдПрдХ Google рдбреЙрдХреНрд╕ рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рд╕реА рднреА рдЖрдЧрдВрддреБрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ Google рдЗрдВрдЬреАрдирд┐рдпрд░ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ
--id
--name
--creator_id
рдкрддреНрд░рдХ
--id
--document_id
--name
рдкрдВрдХреНрддрд┐рдпреЛрдВ
--number
--sheet_id
--height
рдХреЙрд▓рдо
--number
--sheet_id
--width
рдХреЛрд╢рд┐рдХрд╛рдУрдВ
--id
--sheet_id
--color
--content
--row_number
--col_number
--creator_id
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрд╢реНрд▓реАрд▓ рд╢рдмреНрдж рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрд░рдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рдЕрдирд┐рд╡рд╛рд░реНрдп
- рдкрд┐рдЫрд▓реЗ рд╕реЗрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдПрдХ рдСрдирд▓рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдИрдбреА, рд╢реАрдЯ_рдЖрдИрдбреА)
- рдкреНрд░рдпреБрдХреНрдд рдУрдЖрд░рдПрдо рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╡рд╛рдВрдЫрдиреАрдп
- рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ, рдирдореВрдирд╛ рд▓реЗрдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рд╢реНрд░рдо рд▓рд╛рдЧрдд
- рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдмрдЪрдд
- рдкреБрд░рд╛рдиреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдмрд╣реБрдд рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХреЗ рдмрд╛рдж, рдПрдХ "рд╕реВрддреНрд░" рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдирд╡ рдирд┐рд░реНрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдЪрд╛рд╣рд┐рдП:
рд╕рдВрд╢реЛрдзрди
--id
--parent_id
--document_id
--created_date
рд╣рдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ 2 рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рддрд╛рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдмрдиреЗ рд░рд╣реЗ, рдФрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ -рдбреЗрдЯрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрд╢реЛрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, cells_data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдо create_in_revision_id, рд╣рдЯрд╛рдП рдЧрдП_in_revision_id рдлрд╝реАрд▓реНрдб рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдХреЛрд╢рд┐рдХрд╛рдУрдВ
--id
--sheet_id
--row_number
--col_number
--creator_id
cells_data
--cell_id
--color
--content
--data_creator_id
--created_in_revision_id
--deleted_in_revision_id
(cell_id + create_in_revision_id рдкрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА)
рд╣рдорд╛рд░реЗ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ (рдпрджрд┐ рд╣рдо рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ) рдореЗрдВ рдХреЛрдб рдореЗрдВ рд╣рдо getRevisionCondition method ($ revisionId = false) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ "0_100,300,301 рдореЗрдВ" create_in_revision_id (0,100,300,301) рдореЗрдВ "create_in_revision_id" рдЬреИрд╕реЗ SQL рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рд╡рд░реНрддрдорд╛рди рд╕рдВрд╢реЛрдзрди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЙрд╕рдХреЗ рд╕рднреА рднрд╛рдЧреАрджрд╛рд░ "(...)" рдФрд░ "рдирд╣реАрдВ (...)" рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдирдореВрдирд╛
рдЕрдЧрд▓рд╛ рдХреНрд╡рд╛рд░ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
select * from cells where row_number=3 and col_number=2
рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
select c.*,cd.* from cells c,cells_data cd where row_number=3 and col_number=2 and id=cell_id and $revisionCondition
рдмреЗрд╢рдХ, рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓реЗрдВ
рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╕реИрдВрдкрд▓рд┐рдВрдЧред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрд╢реЛрдзрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдПрдХ рд▓реЗ рд▓реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
$revision=$document->updateRevisionIfExpired()
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ (рдХреЛрд╢рд┐рдХрд╛рдУрдВ) рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдлрд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ (cells_data) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВред Create_in_revision_id рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдирд╡реАрдирддрдо рд╕рдВрд╢реЛрдзрди рдХреА рдЖрдИрдбреА рд▓рд┐рдЦреЗрдВред
рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдПрдВ
рдпрд╣рд╛рдВ рд╣рдо рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрд╢реЛрдзрди рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ 30 рдорд┐рдирдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
- рдЕрдЧрд░ рд╡реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ - рдмрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
- рдпрджрд┐ рд╕рдВрд╢реЛрдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрд╕ рдХрдХреНрд╖реЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рд╕рдВрд╢реЛрдзрди рдХреА рдЖрдИрдбреА рд▓рд┐рдЦреЗрдВ_рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ - delete_in_revision_id
рдиреЛрдб.рдЬреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
if(cellRevisionId==currentRevision.getId()){ db.online.query("delete from cells_data where cell_id="+cellId+" and created_in_revision_id="+cellRevisionId) }else{ db.online.update('cells_data',{'deleted_in_revision_id':currentRevision.getId()},{'cell_id': cellId, 'created_in_revision_id' : cellRevisionId}) }
рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдбреЗрдЯрд╛ рдмрджрд▓рдирд╛ рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реИред рдпрджрд┐ рд╕рдВрд╢реЛрдзрди рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╡рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдЯрд╛рдП рдЧрдП_in_revision_id рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб cells_data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ create_in_revision_id рдореЗрдВ рдирдП рд╕рдВрд╢реЛрдзрди рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреЗрдмрд▓ рдЕрдм рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ - рдореИрдВ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
рдЧреМрд░рд╡
- рд╕рднреА рдЪрдпрди рдФрд░ рдЖрд╡реЗрд╖рдг (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЪрдпрди рдФрд░ рдЖрд╡реЗрд╖рдг) рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗ
- рдЬреЛ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ
рдХрдорд┐рдпреЛрдВ
- рд╣рдЯрд╛рдирд╛, рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдХрд╕рдХрд░ рдШрд╛рд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧреА
- рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ (...) рдФрд░ (...) рдореЗрдВ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рднреА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ