PHPProject is a library written in pure PHP that provides a set of classes to write to different project management file formats

Overview

PHPProject

Latest Stable Version Build Status Code Quality Code Coverage Total Downloads License

PHPProject is a library written in pure PHP that provides a set of classes to write to different project management file formats, i.e. Microsoft MSProjectExchange (MPX) or GanttProject (GAN). PHPProject is an open source project licensed under the terms of LGPL version 3. PHPProject is aimed to be a high quality software product by incorporating continuous integration and unit testing. You can learn more about PHPProject by reading the Developers' Documentation and the API Documentation.

Read more about PHPProject:

Features

  • Create an in-memory project management representation
  • Set file meta data (author, title, description, etc)
  • Add resources from scratch or from existing one
  • Add tasks from scratch or from existing one
  • Output to different file formats: MSProjectExchange (.mpx), GanttProject (.gan)
  • ... and lots of other things!

Requirements

PHPProject requires the following:

Installation

It is recommended that you install the PHPProject library through composer. To do so, add the following lines to your composer.json.

{
    "require": {
       "phpoffice/phpproject": "dev-master"
    }
}

Alternatively, you can download the latest release from the releases page. In this case, you will have to register the autoloader. Register autoloading is required only if you do not use composer in your project.

require_once 'path/to/PhpProject/src/PhpProject/Autoloader.php';
\PhpOffice\PhpProject\Autoloader::register();

Getting started

The following is a basic usage example of the PHPProject library.

require_once 'src/PhpProject/Autoloader.php';
\PhpOffice\PhpProject\Autoloader::register();

$objPHPProject = new PhpProject();$objPHPProject = new PhpProject();

// Create resource
$objRes1 = $objPHPProject->createResource();
$objRes1->setTitle('UserBoy');

// Create a task
$objTask1 = $objPHPProject->createTask();
$objTask1->setName('Start of the project');
$objTask1->setStartDate('02-01-2012');
$objTask1->setEndDate('03-01-2012');
$objTask1->setProgress(0.5);
$objTask1->addResource($objRes1);

$oWriterGAN = IOFactory::createWriter($objPHPPowerPoint, 'GanttProject');
$oWriterGAN->save(__DIR__ . "/sample.gan");

More examples are provided in the samples folder. You can also read the Developers' Documentation and the API Documentation for more details.

Contributing

We welcome everyone to contribute to PHPProject. Below are some of the things that you can do to contribute:

Comments
  • Fixed typos & experimental read support for MS Project Database (.mdp) files

    Fixed typos & experimental read support for MS Project Database (.mdp) files

    I managed to add support for mdp files using mdbtools command line tools. Not pretty implementation which works only on Linux, but it's the best that I could come with.

    Component - MSProjectDatabase 
    opened by tangervu 6
  • Include GanttProject Writer validator for tests

    Include GanttProject Writer validator for tests

    See this link :

    http://code.google.com/p/ganttproject/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Summary&groupby=&sort=&id=602

    Type - Enhancement Component - GanttProject 
    opened by Progi1984 2
  • Use PHPWord as reference

    Use PHPWord as reference

    To Do List for having PHPProject equals to PHPWord Quality :

    • [x] Migrate source from Classes to src
    • [x] Add some examples in samples directory
    • [x] Migrate unit tests from unitTests to tests
    • [x] Support of PHP 5.3 min. (Reference : https://github.com/PHPOffice/PHPWord/issues/58 & https://github.com/PHPOffice/PHPWord/issues/77)
    • [x] Add support for Scrutinizer
    • [x] Add composer.lock file
    • [x] Unit Tests to Green (https://travis-ci.org/PHPOffice/PHPPowerPoint/jobs/25322876#L1449)
    • [x] PHPDoc to generate
    • [x] Push PHPDoc & Code Coverage to GitHub Pages
    • [x] ReadTheDocs for PHPProject
    • [x] Readme.md
    Type - Enhancement 
    opened by Progi1984 0
  • Format MPD

    Format MPD

    Microsoft Project from Project 98 until Project 2003 could read and write schedules as Microsoft Access database files with the extension MPD. Coincidentally, Microsoft Project Server shares the same database schema as the MPD file format.

    Source : http://www.mpxj.org/howto-read-mpd.html

    Sample File :

    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9task.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9splittask.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9subproject.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9resource.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9relations.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9nulltasks.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9header.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9calendar.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9baseline.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdassignmentcustom.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdassignmentfields.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdduration.mpd

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/mpd/MPDDatabaseReader.java#L79

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • Format ProjectLibre

    Format ProjectLibre

    ProjectLibre writes schedule data to POD files.

    Source : http://www.mpxj.org/howto-read-projectlibre.html

    Sample File :

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/projectlibre/ProjectLibreReader.java#L48

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • Format Gnome Planner

    Format Gnome Planner

    Gnome Planner is a popular open source planning tool which writes its own XML files.

    Source : http://www.mpxj.org/howto-read-planner.html

    Sample File :

    • https://github.com/joniles/mpxj/blob/master/junit/data/password-protected-mpp9.mpp
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-calendar.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-resource.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-sample.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/project1.planner

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/planner/PlannerReader.java#L113

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • MSP Data Interchange Format (MSPDI)

    MSP Data Interchange Format (MSPDI)

    Work in Progress Office 2007 Data Interchange Format (MSPDI) XML spec, I'm starting with this: https://msdn.microsoft.com/en-us/library/bb968652(v=office.12).aspx

    Samples :

    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiassignmentcustom.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiassignmentfields.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiavailability.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdicostratetable.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiduration.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdinulltasks.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdirelations.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiresource.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdisplittask.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspditimephased.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspditimephasedsegments.xml

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/mspdi/MSPDIReader.java#L169


    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    Type - Enhancement Hacktoberfest 
    opened by bhu1st 2
  • Export to HTML

    Export to HTML

    Libraries :

    • https://frappe.io/gantt
      • Child Tasks
      • Duration
    • 👍 https://github.com/neuronetio/elastigantt
      • Child Tasks
      • Duration

    ToDo :

    • [ ] Generate Header
    • [ ] Generate Tasks with heritage
    • [ ] Generate Tasks with duration
    Type - Enhancement Component - HTML Hacktoberfest 
    opened by Progi1984 0
Releases(0.2.0)
  • 0.2.0(Aug 13, 2014)

    Version 0.2.0 add the support of MSProjectExchange (.mpx) files in reading and writing.

    Features

    • MSProjectExchange Reader - @Progi1984 GH-4
    • MSProjectExchange Writer - @Progi1984 GH-2

    Miscellaneous

    • Refactored resources management - @Progi1984
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Aug 8, 2014)

    Version 0.1 is the first release with support of GanttProject for reading and writing files.

    Features

    • Support of Composer - @Progi1984 GH-7 GH-9
    • Support of namespaces - @Progi1984 GH-12
    • GanttProject Writer - @Progi1984 GH-1
    • GanttProject Reader - @Progi1984 GH-3

    Miscellaneous

    • QA : Documentation - @Progi1984 GH-8 GH-12
    • QA : Unit Tests - @Progi1984 GH-12
    Source code(tar.gz)
    Source code(zip)
Owner
PHPOffice
PHPOffice
Gotipath Storage is a file storage library for PHP. It provides one interface to interact with FTP/SFTP.

Gotipath Storage is a file storage library for PHP. It provides one interface to interact with FTP/SFTP. When you use this package, you're protected from vendor lock-in, That mean you can connect to any FTP/SFTP storage. Also it's comes with base URL option to connect Gotipath CDN.

Gotipath 2 Nov 3, 2021
FIle Uploader is a php package to aid fast , easy and safe file upload

FILE UPLOADER FIle Uploader is a php package to aid fast , easy and safe file upload installation composer require codad5/file-helper Features Fast an

Aniezeofor Chibueze Michael 2 Sep 3, 2022
Upload File Library For PHP ( Simple & Easy User )

Upload File Library For Backend/ServerSide PHP ( Simple & Easy For Use ), Support Multiple Upload

Lamhot Simamora 1 Oct 12, 2021
FileNamingResolver - A lightweight library which helps to resolve a file/directory naming of uploaded files using various naming strategies

FileNamingResolver - A lightweight library which helps to resolve a file/directory naming of uploaded files using various naming strategies

Victor Bocharsky 111 May 19, 2022
PHP library that provides a filesystem abstraction layer − will be a feast for your files!

Gaufrette Gaufrette provides a filesystem abstraction layer. Why use Gaufrette? Imagine you have to manage a lot of medias in a PHP project. Lets see

KNP Labs 2.4k Jan 7, 2023
Watch changes in the file system using PHP

Watch changes in the file system using PHP This package allows you to react to all kinds of changes in the file system. Here's how you can run code wh

Spatie 170 Dec 25, 2022
File manager module for the Lumen PHP framework.

Lumen File Manager File manager module for the Lumen PHP framework. Please note that this module is still under active development. NOTE: Branch 5.1 i

Digia 40 Aug 20, 2022
ORM-based file upload package for php.

#Stapler Note: If you've previously been using this package, then you've been using it with Laravel. This package is no longer directly coupled to the

Code Sleeve 541 Dec 30, 2022
Detects file type by filename or content and generates correct mimetype.

FileTypeDetector Files type detector based on file name extension or file content (binary content). Usage Installation Supported formats Usage File Ty

Sergey 31 Oct 6, 2022
Uguu is a simple lightweight temporary file host with support for drop, paste, click and API uploading.

Uguu What is Uguu? Uguu is a simple lightweight temporary file hosting and sharing platform, but can also be used as a permanent file host. Features O

Eric Johansson (neku) 547 Dec 28, 2022
kodbox is a file manager for web. It is a newly designed product based on kodexplorer.

kodbox is a file manager for web. It is a newly designed product based on kodexplorer. It is also a web code editor, which allows you to develop websites directly within the web browser.You can run kodbox either online or locally,on Linux, Windows or Mac based platforms

warlee 1.2k Jan 7, 2023
A web based file manager,web IDE / browser based code editor

KodExplorer Update to kodbox: https://github.com/kalcaddle/kodbox Download | Demo It is recommended to use a new design upgrade product:kodbox 该项目处于维护

warlee 5.8k Jan 3, 2023
🛬🧾 A PHP8 TacView ACMI file format parser

A PHP8 TacView ACMI file format parser This package offers parsing support for TacView ACMI flight recordings version 2.1, it follows the standard des

Ignacio Muñoz Fernandez 1 Jan 18, 2022
Creating a file uploader with Laravel

File-Uploader File uploader is a simple group of restful APIs built in Laravel to upload file into a server and remove the file from that server. Tool

AmirH.Najafizadeh 4 Jul 31, 2022
Basic anonymous and registered upload storage for temporary share file self hosted.

TMPShareX Basic anonymous and registered upload storage for temporary share file self hosted. Server Requirement PHP 7.4.8 [Support PHP 8] Nginx 1.19.

Sandy Hermansyah 1 Feb 3, 2022
Media gallery with CKEditor, TinyMCE and Summernote support. Built on Laravel file system.

Documents ・ Installation ・ Integration ・ Config ・ Customization ・ Events ・ Upgrade ・ Demo ・ FAQ Features File upload and management Uploading validati

UniSharp 1.9k Jan 1, 2023
Simple file uploading, Pomf like

Pomf-0x80 Simple file uploading, Pomf like. Features One click uploading, no registration required IPFS Upload + Pin A minimal, modern web interface D

Iqbal Rifai 4 Apr 28, 2022
Private file storage and share with user build with laravel and vue inspired by google drive

LaravelDrive is a file storage system that allows store private file and share with users build wiht laravel and vue inspired by google drive. Laravel

Shahadat Hossain 70 Dec 22, 2022